私の質問はかなり基本的なものだと思いますが、このコードを OpenCV で記述して、ウェブカメラからビデオ データをキャプチャしてファイルに保存するだけです。ここでの問題は、ファイルが目的の宛先に作成されることです。最初のサイズは約 286 バイトです。次に、最初のフレームをポインターに割り当てると、サイズが 414 バイトに増加します。ただし、コード全体を実行すると、保存されたビデオのサイズは 414 バイトのままです。もちろん、その結果、私のメディア プレーヤーはファイルを再生できず、「QuickTime Player が理解できる形式ではありません」と表示されます。VLCプレーヤーでも同じことが起こります。
これが私のコードです:
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
int main( int argc, char** argv ) {
CvCapture* capture;
capture = cvCreateCameraCapture(0);
assert( capture != NULL );
IplImage* bgr_frame = cvQueryFrame( capture );
CvSize size = cvSize(
(int)cvGetCaptureProperty( capture,
CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty( capture,
CV_CAP_PROP_FRAME_HEIGHT)
);
cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE );
CvVideoWriter *writer = cvCreateVideoWriter( "/Users/user/Desktop/OpenCV_trial/OpenCV_trial/vidtry.AVI",
CV_FOURCC('D','I','V','X'),
30,
size
);
while( (bgr_frame = cvQueryFrame( capture )) != NULL )
{
cvWriteFrame(writer, bgr_frame );
cvShowImage( "Webcam", bgr_frame );
char c = cvWaitKey( 33 );
if( c == 27 ) break;
}
cvReleaseVideoWriter( &writer );
cvReleaseCapture( &capture );
cvDestroyWindow( "Webcam" );
return( 0 );
}
なぜこれが起こっているのかわかりません。Mac OSX Lion を使用し、Xcode を実行しています。
誰もこの問題に直面したことがありますか? もしそうなら、どうすれば解決できますか?
ありがとうございました!
-ヤシュ