2016-10-24 3 views
0

ビデオの各フレームの開始時間を知ることは非常に重要です。私はMATLABコードの下に使用して(ここでは例848のために)手動で開始点を決定する必要があり :ビデオの各フレームの開始時間を知るにはどうすればよいですか?

v = VideoReader('video1.avi','CurrentTime',848); 
while hasFrame(v) 
    video_frame = readFrame(v); 
    counter=counter+1; 

    if counter==1 
     imshow(video_frame) 
     imhist(video_frame(:,:,1)) 
    end 
end 

私が欲しいものは、ヒストグラムを使用して他の人からいくつかのビデオフレームを区別することです。最終的に私の目的は、の識別されたフレームの正確な表示時間に達することです。製作中の後

これはフレームヒストグラム出力です:いくつかのフレームの enter image description here

ヒストグラムのサイズは、その理由を知っていますか、以前のものとは異なっていますか?

私は異なるヒストグラムサイズのフレームを削除していましたが、いくつかのフレームが欠落していました。

+0

だけで物事をクリアするために:あなたはいくつかの時間のために何か(例えば黒画面)を示すビデオを持って、そしてカットはそれがヒストグラムを使用して見つけることができ起こると、あなたはそれが右、automaticallly見つけることがしたいですか?あなたは、例のビデオファイルを与えることができますか?それは非常に役立つだろう – Finn

+0

はい正確に。残念ながら、著作権の問題があるため、ビデオを共有できません。ビデオは、最初のシーンでは男の顔と背景が黒で、2番目のシーンにはテキストがあり、後ろには白があり、最後に3番目のシーンは空白で、背景もやはり白です。あなたはランダムなビデオのためにそれに答えることができますか? – user951487

答えて

1

私はhaventは、あなたがディスクロージャーのように見えるビデオの例が見つかりました。例を持つことを常に条件にしてください。

このコード例では、ヒストカウントの差異を計算します。 waitforbuttonpressがループしているので、ビデオが長すぎる場合は、テスト中または削除中に各フレームをクリックする必要があります。これはあなたのファイル上で動作しますか?

v = VideoReader('sample.avi','CurrentTime',1); 
figure1=figure('unit','normalized','Position',[0.2 0.2 0.4 0.6]); 
axes1=subplot(3,1,1); 
axes2=subplot(3,1,2); 
axes3 = subplot(3,1,3); 

counter=0; 
difference=[]; 
video_frame=readFrame(v); 
while hasFrame(v) 
    lastframe=video_frame; 
    video_frame = readFrame(v); 
    counter=counter+1; 

    imshow(video_frame,'Parent',axes1); 
    [a,b]=histcounts(video_frame(:,:,1)); 
    plot(b(1:end-1),a,'Parent',axes2); 

    difference=[difference sum(abs(histcounts(video_frame,0:255)-histcounts(lastframe,0:255)))]; 
    bar(1:counter,difference,'Parent',axes3); 
    waitforbuttonpress 
end 
    [~,onedistinguished]=max(difference); 
    %defining a threshold like every value that is bigger 4000 
    multidistinguished=find(difference>4000); 

    disp(['majorly changed at: ' num2str(distinguished)]); 
+0

助けてくれてありがとう@Finn、それは動作します。しかし、どのようにして各フレームの正確な時刻を判断できますか?ヒストグラム上の複数のピック・ポイントでなければなりません。複数のフレームとその表示時間を意味します。 – user951487

+0

時間について(私はあなたが秒で意味すると仮定します):あなたがあなたのビデオのフレームレートを知っているなら、単にframenumber/framerateによってそれを計算することができます。しかし、私はフレームレートに関する情報がファイルの内部に格納されているかどうかはわかりません。複数の区別は簡単ですが、違いの棒グラフを表示する必要があります。それらは著作権保護されていません – Finn

+0

私は主な質問に答えました。フィンに感謝します。 – user951487

関連する問題