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

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 Comment

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

Sign in to comment.

 Accepted Answer

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 Comments

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);

Sign in to comment.

More Answers (2)

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

Categories

Find more on Graphics Object Properties in Help Center and File Exchange

Products

Release

R2023a

Community Treasure Hunt

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

Start Hunting!