2016-10-31 59 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 =讀(MOV,i)和imshow(IMG,[])」 之間的視頻播放完美使用在一個新的數字窗口中。但我不想那樣,我想在軸之間播放它。請幫幫我。 –

+0

在調用'imshow'之後,在循環中添加'drawnow;'。 – Hoki

+0

@Hoki。你搖滾人。它工作完美。非常感謝你.. :) –

回答

0

你有你的視頻與正確的繪圖區連接。 我寫我的解決方案,在FOR循環中的正常情節工作(不是嘗試與真正的視頻)

首先,你給你的繪圖區域名稱(句柄)在你的matlab GUI?我將它命名爲座標軸1.

第二,我將這個圖作爲一個外部函數寫在了一個由按鈕調用的.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); 

注:我沒有在我的程序handles = guidata(hObject);

+0

請找到我的評論作爲答案。根據對文字的限制,我已將我的評論作爲答案。 –

+0

@NipjyotiSarma對不起,我認爲這是我的錯:我從我的舊腳本中複製它,並在代碼的第一行(函數聲明)中犯了一個小錯誤。請記住將兩個.m文件保存在同一個文件夾中(這很明顯,但我沒有說)。再次檢查第一行,更改它,然後告訴我它是否有效。如果不行,我會再幫你的! – marcoresk

+0

@macrcoresk Yaa,我做了那些更正,但它仍然無法正常工作。但正如'Hoki'所暗示的那樣,imshow後插入drawnow工作得很好。感謝您的反饋意見。 :) –

相關問題