我使用GUIDE开发了一个Matlab应用程序,可以加载图像并对其进行分析。简而言之,我使用 imshow 显示图像并添加标记和文本(分别使用 plot 和 text 函数)。我想将图形打印到文件中,包括标记和文本,但奇怪的是它只打印原始图像。另一方面,当我在打印命令之前放置一个断点时,它完美地工作,所以在我看来这是一个" timing"的问题。但是,我试过" drawow"和"暂停(X)"没有用,所以我想知道我是做错了还是有另一种方法可以做到这一点。 这是伪代码,它位于" updateImage()"功能(由按钮调用):
cla(handles.h_image); %clear image axes. "handles" is a structure created by GUIDE containing handles to all objects in the figure. "handles.h_image" is the handle to the axes of my image
im = imshow(ch_data,'Parent',handles.h_image); drawnow %ch_data contains the image
hold on
for n = 1:length(myarray) % myarray is not actually too big, length of about 100
x1 = whatever; x2 = whatever; y1 = whatever; y2 = whatever;
plot([x1 x2],[y1 y2],'linestyle','-','linewidth',1,'color',[211 99 252]/255);
text(x1, y1, num2str(n),'Fontsize',10,'color',[208 240 255]/255);
end
pause(5) %tried different values, but still not working in runtime
cd(results_dir)
print(handles.container,'-dtiff', '-opengl', '-r300', 'myimagename');
编辑:我已经在单独的脚本上尝试了这部分代码并且工作正常......
f = figure;
im = imshow('peppers.png'); drawnow
hold on
r = randi([1 size(im.CData,1)],1,200);
for n = 1:50
x1 = r(n); x2 = r(n*2); y1 = r(n*3); y2 = r(n*4);
plot([x1 x2],[y1 y2],'linestyle','-','linewidth',1,'color',[211 99 252]/255);
text(x1, y1, num2str(n),'Fontsize',10,'color',[208 240 255]/255);
end
print(f,'-dtiff', '-opengl', '-r300', 'myimagename');
答案 0 :(得分:0)
两个代码段之间的一个区别是,第一个是保存'handles.container',而另一个是数字句柄。
尝试
f = ancestor ( handles.h_image, 'figure )
print ( f, ..... )