我正在编写一个Matlab GUI,我需要在一个轴上显示图像。图像来自相机。所以我发现当使用预览来显示带有一个轴的摄像机时,我可以回到命令窗口。但是当我使用获取带有getsnapshot()函数的图像并进行一些处理然后使用其他轴实时显示处理过的图像时,我发现我无法返回命令窗口。这可能是因为轴一直在刷新。因此,当我单击命令窗口时,弹出的轴会打扰命令窗口。所以任何人都知道解决方案以下是我的GUI面板。
这样的代码:
while length>0 % length is the video duration that user set
frame = getsnapshot(VidObj); % VidObj is the camera
signal = imageprocess(frame); % image processing
axes(handles.Signal_Monitor); % show in axes Signal_Monitor
imshow(signal); % show result image
end
非常感谢!
按函数imshow显示的图像(信号,' InitialMagnification',' fit',' Parent',handles.Signal_Monitor); 4x4分辨率
按功能设置显示图像(handles.ih,' cData',信号);它只是一个很小的区域。因为我将相机拍摄的原始图像处理成非常小的图像。 4x4分辨率
答案 0 :(得分:0)
不是在每次迭代中重新绘制信号,而是使用
更改图像的CData
set(ih, 'cData', signal);
其中ih
是第一次使用ih = imshow(signal)
绘制时绘制图像的句柄。并删除axes
来电,当您执行此操作时切换焦点。例如,您可以按如下方式修改代码以实现此目的
length = Total_Time;
while length>0 % length is the video duration that user set
frame = getsnapshot(VidObj); % VidObj is the camera
signal = imageprocess(frame); % image processing
if length==Total_Time % plot only during the first iteration
axes(handles.Signal_Monitor); % show in axes Signal_Monitor
handles.ih = imshow(signal); % show result image
else
set(handles.ih, 'cData', signal);
end
length = Total_Time - 1;
end
我确信有更好的方法,但我无权访问您的所有代码。