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