Я пытаюсь написать программу для анализа эмоциональных выражений, таких как слезы. В качестве части моего трекера я использую OpenCV для записи примеров видео. В частности, я не уверен, как правильно выбрать FPS (похоже, что 10FPS должен работать). Я также не уверен, какой Codec, который я должен использовать на OS X, я также пробовал все возможные CV_FOURCC из здесь, но возвратил следующую ошибку:
Stream #0.0: Video: rawvideo, yuv420p, 640x480, q=2-31, 19660 kb/s, 90k tbn, 10 tbc
Assertion failed: (image->imageSize == avpicture_get_size( (PixelFormat)input_pix_fmt, image->width, image->height )), function writeFrame, file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_graphics_opencv/work/OpenCV-2.2.0/modules/highgui/src/cap_ffmpeg.cpp, line 1085.
У вас есть рабочий код с cvWriteFrame? Спасибо, что нашли время, чтобы посмотреть на мою проблему!
Для тех, кого интересует вся программа:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main (int argc, const char * argv[])
{
CvCapture *capture;
IplImage *img;
int key = 0;
CvVideoWriter *writer;
// initialize camera
capture = cvCaptureFromCAM( 0 );
// capture = cvCaptureFromAVI("AVIFile");
// always check
assert( capture );
// create a window
cvNamedWindow( "video", 1 );
int color = 1; // 0 for black and white
// get the frame size
CvSize size = cvSize((int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT));
writer = cvCreateVideoWriter(argv[1], -1 , 10 , size, color);
while( key != 'q' ) {
// get a frame
img = cvQueryFrame( capture );
// always check
if( !img ) break;
cvWriteFrame( writer, img );
cvShowImage("video", img );
// quit if user press 'q'
key = cvWaitKey( 5 );
}
// free memory
cvReleaseVideoWriter( &writer );
cvReleaseCapture( &capture );
cvDestroyWindow( "video" );
return 0;
}