2016-10-31 8 views
0

У меня есть gui с осью и кнопкой, когда я нажимаю кнопку, видео должно воспроизводиться на графике оси. Я написал этот код, но это не выполняются и не отображаются какие-либо ошибки. Может ли кто-нибудь помочь мне ..У меня есть gui с осью и кнопкой

function pushbutton1_Callback(hObject, eventdata, handles) 
    % hObject handle to pushbutton1 (see GCBO) 
    % eventdata reserved - to be defined in a future version of MATLAB 
    % handles structure with handles and user data (see GUIDATA) 
    handles=guidata(hObject); 
    mov=VideoReader('VileParle.mp4'); 
    nFrames=mov.NumberOfFrames; 
    for i=1:nFrames 
     img=read(mov,i); 
     imshow(img,[]); 
    end 
    guidata(hObject,handles) 
+1

Если я ставлю "цифра (1)" в периоде между "IMG = чтением (мы, я) и imshow (IMG, [])" видео отлично играет в новом окне фигуры. Но я не хочу этого, я хочу играть между ними. Пожалуйста, помогите мне. –

+0

добавьте 'drawow;' в ваш цикл после вызова 'imshow'. – Hoki

+0

@Hoki. Ты качаешь человека. Он отлично работал. Большое вам спасибо. :) –

ответ

0

Вам необходимо подключить свое видео с подходящей площадью участка. Я пишу свое решение, которое работало на нормальный сюжет в цикле FOR (не пытались с реальными видео)

Во-первых, какое имя (дескриптор) вы дали вам участок участка в вашем графическом интерфейсе Matlab? Я назвал его осями.

Во-вторых, я написал график как внешнюю функцию в файле .m, вызываемом кнопкой, а не как функцию самой кнопки (рассмотрим эту опцию, но я думаю, что это можно сделать в обратный вызов)

в-третьих, код функции внешнего сохраняется в файле display_function.m

function [Output1, Output2] = display_function(mov, nFrames, axes1, handles) 
    %output are optional in this case 
    hg = hgtransform('parent', axes1); 
    for i=1:nFrames 
      img=read(mov,i); 
      Frame(i) = imshow(img,[]); %plot the frame as an object 
      set(Frame(i),'Parent',hg); 
      drawnow 
      pause(0.001); 
      if (i>1) 
      delete(Frame(i-1)); 
      end 
    end 

функция в кнопке должна называться как то

function pushbutton1_Callback(hObject, eventdata, handles) 
% hObject handle to pushbutton1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
handles.mov=VideoReader('VileParle.mp4'); 
handles.nFrames=handles.mov.NumberOfFrames; 
[handles.Output1, handles.Output2] = display_function(handles.mov,handles.nFrames, handles.axes1); 

NB я не использовал в моей программе handles = guidata(hObject);

+0

Пожалуйста, найдите мой комментарий как ответ. В соответствии с ограничениями на слова, я поставил свой комментарий в качестве ответа. –

+0

@NipjyotiSarma Извините, я думаю, что это была моя ошибка: я скопировал ее из моего старого сценария, и я сделал небольшую ошибку в первой строке кода (объявление функции). Не забудьте сохранить оба файла .m в одной папке (это очевидно, но я этого не сказал). Проверьте снова первую строку, измените ее, а затем скажите, работает ли она. Если этого не произойдет, я помогу тебе снова! – marcoresk

+0

@macrcoresk Yaa, я сделал эти исправления, но он все еще не работал. Но, как было предложено «Хоки», вставка притяжения после imshow отлично работала. Спасибо за ваш отзыв. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^