Matlab GUi当轴刷新时如何返回命令窗口

时间:2017-08-31 20:01:46

标签: matlab user-interface

我正在编写一个Matlab GUI,我需要在一个轴上显示图像。图像来自相机。所以我发现当使用预览来显示带有一个轴的摄像机时,我可以回到命令窗口。但是当我使用获取带有getsnapshot()函数的图像并进行一些处理然后使用其他轴实时显示处理过的图像时,我发现我无法返回命令窗口。这可能是因为轴一直在刷新。因此,当我单击命令窗口时,弹出的轴会打扰命令窗口。所以任何人都知道解决方案以下是我的GUI面板。

GUI panel. I preview the camera with video axes and do the image processing and show the result image with Signal_Monitor axes

这样的代码:

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

非常感谢!

Image show by function imshow(signal,'InitialMagnification','fit','Parent',handles.Signal_Monitor); 4x4 resolution 按函数imshow显示的图像(信号,' InitialMagnification',' fit',' Parent',handles.Signal_Monitor); 4x4分辨率

mage show by function set(handles.ih, 'cData', signal); It is only a tiny region. Because I process the original image captured by camera to a very small picture. 4x4 resolution 按功能设置显示图像(handles.ih,' cData',信号);它只是一个很小的区域。因为我将相机拍摄的原始图像处理成非常小的图像。 4x4分辨率

1 个答案:

答案 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

我确信有更好的方法,但我无权访问您的所有代码。