How to save volshow(data,config) as fig or img [volumeViewer]?

75 ビュー (過去 30 日間)
shubham kumar gupta
shubham kumar gupta 2023 年 5 月 11 日
回答済み: Edmund Pickering 2023 年 9 月 14 日
Hi, I was using this volshow() function from volume viewer i wanted to save the output as figure file or image of that figure.
I have exported the config file
I have the data
volshow() opens a window
h=volshow(data,config);
viewer = h.Parent;
hFig = viewer.Parent;
but hFig is blank
  1 件のコメント
Walter Roberson
Walter Roberson 2023 年 5 月 12 日
In my test, hFig is a figure with number [] and name '' -- but that does not mean that the figure is empty. It is a handle

サインインしてコメントする。

採用された回答

Simon Chan
Simon Chan 2023 年 5 月 12 日
移動済み: Matt J 2023 年 5 月 12 日
In case a new window is open after using function volshow, you should be able to find the figure object and save the image using function getframe as mentioned in the documentation.
vs = volshow(data);
obj = ancestor(vs,'figure','toplevel');
I = getframe(obj);
imshow(I.cdata);
  2 件のコメント
Simon Chan
Simon Chan 2023 年 5 月 12 日
Here is my test:
clear; clc;
vs = volshow(randi(10,[256 256 100]));
vs.Parent.Position = [0 0 300 250];
obj = ancestor(vs,'figure','toplevel');
set(obj,'Position',[580 230 300 250]);
pause(5);
F = getframe(obj);
f2 = figure('Position',[880 230 300 250]);
ax2 = axes(f2);
imagesc(ax2,F.cdata);
shubham kumar gupta
shubham kumar gupta 2023 年 5 月 14 日
thank you

サインインしてコメントする。

その他の回答 (2 件)

Matt J
Matt J 2023 年 5 月 11 日

Edmund Pickering
Edmund Pickering 2023 年 9 月 14 日
I have this working with the following code.
% create viewer
viewer = viewer3d(BackgroundColor="white", GradientColor=[0.5 0.5 0.5],Lighting="on",BackgroundGradient="off");
% volshow
volBone = volshow(stack_(180:400,1:240,1179:1309)>250,'colormap',[214 184 150]/255,Parent=viewer);
% capture frame
frame = getframe(viewer.Parent);
If running in a loop, capturing succesive frames, I've found this helpful
viewer = viewer3d(...)
pause(5) % pause to give viewer time to fully open
for i = 1:...
viewer.clear % clear previous
pause(1) % pause to clear
volshow(...)
frame = getframe(viewer.Parent);
writeVideo(v,frame)
end

製品


リリース

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by