0

OpenCVでaviビデオのサイズを知る方法はありますか? 空白のビデオがいくつかあり、それらを処理する代わりに、サイズをしきい値と比較してそれらを取り除きたいです。たとえば、ビデオのサイズが 200 kB 以下の場合、そのビデオの処理をスキップします。

アップデート:

     CvCapture *capture = cvCreateFileCapture(path);
     IplImage *img = cvQueryFrame( capture );  

すべてのビデオのフレーム数は同じですが、一部のビデオにはすべて空白のフレームがあります。

4

2 に答える 2

0

実際のファイルサイズを取得する場合は、OpenCVがこの情報をオブジェクトに保存しないため、を使用するfopen()必要があります。ただし、次のように空白の動画を検出できます。statcvCapture

CvCapture *capture = cvCaptureFromAVI( argv[1] );
int numFrames = (int) cvGetCaptureProperty(&capture, CV_CAP_PROP_FRAME_COUNT);

次に、フレーム数に基づいて空白かどうかを判断します。

関連ドキュメント:

http://opencv.willowgarage.com/documentation/reading_and_writing_images_and_video.html?highlight=cvcapture#getcaptureproperty

空のビデオのファイルサイズが異なっていても、ファイルのフレーム数が同じである場合は、キーフレームによるビデオ圧縮が原因です。つまり、空白のフレームを検出する最良の方法は、ファイルサイズを取得することです。これは、OpenCVの範囲外であり、プレーンC /C++を使用して簡単に実行できます。

#include <sys/stat.h>
...
struct stat st;
stat(avi_filename, &st);
size = st.st_size;
于 2012-07-16T16:41:39.057 に答える
0

GetCapturePropertyCV_CAP_PROP_FRAME_COUNTを使用してビデオ プロパティを取得することで、フレーム数を取得できます。

CV_CAP_PROP_FRAME_COUNT ビデオ ファイル内のフレーム数。

ファイル (ビデオ) のサイズを取得するには、別の API があります。システムによって異なります (WinAPI、POSIX など)。たとえば、Windows ではGetFileSizeEx()関数です。

このSO ディスカッションも参照してください。

于 2012-07-16T16:37:15.847 に答える