使用imshow从MATLAB中的计时器回调函数更改GUI中的轴

时间:2013-03-14 19:08:53

标签: matlab user-interface timer callback matlab-guide

我正在使用GUI(名为MainVidGUI,使用GUIDE,OpeningFcn是由GUIDE创建的基本的),它有轴(称为hcam),按下按钮(称为Acquisition),我想从实时视频流修改帧并在轴上显示修改后的帧。

目前代码如下:

按钮回调功能:

function Acquisition_Callback(hObject, eventdata, handles)
  global DevAdapt DevID DevFormat
  vid=videoinput(DevAdapt,DevID,DevFormat);
  vid.ReturnedColorspace = 'grayscale';
  set(vid,'TimerPeriod',0.1);
  triggerconfig(vid,'manual');
  set(vid,'FramesPerTrigger',1);
  set(vid,'TriggerRepeat',1000);
  start(vid);
  set(vid,'TimerFcn',{@lane_detection,handles});

定时器回调函数:

function lane_detection(vid, event, handles)
   trigger(vid);
   previewframe = getdata(vid,1);
   %code here that modifies the previewframe a little bit
   set(MainVidGUI,'CurrentAxes',handles.hcam);
   imshow(previewframe)

按下采集按钮时,启用计时器并修改图像,但是它们会显示在新的图1窗口而不是GUI轴上。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

阅读imshow功能的帮助。在imshow调用中为“父”属性指定要绘制的轴。