Использование imshow для изменения осей в графическом интерфейсе из функции обратного вызова таймера в MATLAB

Я использую графический интерфейс (называемый 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 вместо осей графического интерфейса. Есть ли способ исправить это?


person Dimitris D. Patoukas    schedule 14.03.2013    source источник


Ответы (1)


Прочтите справку по функции imshow. Укажите оси, по которым вы хотите рисовать, для свойства «Родитель» в вызове imshow.

person wakjah    schedule 21.03.2013