2017-11-30 24 views
2

私はビデオのいくつかのフレームに移動するようなビデオを制御するためにMATLAB GUIのスライダを設定しようとしています。 「obj」は、ユーザによって選択されたビデオファイルである。次のコードを使用して入力ビデオを取得し、GUIの軸に表示しました。MATLAB GUIでビデオを制御するスライダを設定する方法は?

global b  
    filename = get(handles.edit3, 'String'); 
     if ~exist(filename, 'file') 
     warndlg('Text in edit box is not the name of a file'); 
     return 
     end 
     try 
     obj = VideoReader(filename); 
     catch 
     warndlg('File named in edit box does not appear to be a usable movie file'); 
     return 
     end 

    axes(handles.axes2) 
    handles.pushbutton5=0; 
    guidata(hObject,handles); 
    while ~(handles.pushbutton5) 
     if hasFrame(obj) 
     vidFrame = readFrame(obj); 
     obj; 
     image(vidFrame, 'Parent', handles.axes2); 
     set(axes, 'Visible', 'off'); 
     pause(1/obj.FrameRate) 
     end 
     handles = guidata(hObject); 
    end 
    clear obj 

スライダは、ユーザがスライダを制御している間に "b"値を提供します。

どのようにビデオがスライダーで制御できるようにこの問題を解決するか知っていますか?

+0

を、あなたの質問が明確に策定ていただけますか?ビデオのどのプロパティを値 'b'で制御したいですか?フレームインデックスですか?再生速度またはビデオの明るさは? –

+0

スライダーを使ってビデオのいくつかの部分またはフレームにジャンプするか、移動する必要があります。 –

+0

ビデオフレームの描画は 'slider2_Callback'関数で行わなければなりません。そこにあなたのビデオファイルにアクセスし、インデックス 'b'でフレームを読む必要があります。あなたのデータにアクセスするには、あなたの 'guidata'構造内に配置します。変数 'b'はグローバルである必要はありません。しかし、なぜあなたはmatlabの 'implay()'関数を使わないのですか? https://de.mathworks.com/help/images/ref/implay.html –

答えて

1

あなたはMATLABからこのソリューションを使用することができますMATLABのビジョンツールボックス所有している場合:

Video Player in a custom GUI

関連する問題