我正在使用openCV从摄像头捕获视频并存储到avi文件,问题是当我完成捕获并运行avi文件时,视频流看起来很快......
这是代码
int isColor = 1;
int frameW = 640;
int frameH = 480;
int fps = 25;
CvCapture* capture = cvCaptureFromCAM(0);
assert( capture != NULL );
cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE);
CvVideoWriter *writer = cvCreateVideoWriter(
"out.avi",
CV_FOURCC('M','J','P','G'),
fps,
cvSize(frameW,frameH),
isColor
);
IplImage* frame = cvQueryFrame( capture );
while( (frame = cvQueryFrame( capture )) != NULL ) {
cvWriteFrame(writer, frame);
cvShowImage("Webcam", frame);
char c = cvWaitKey( 33 );
if ( c == 27 ) break;
}
我不明白为什么当我在Windows 7 32位或64位和Vs2008&上使用cvGetCaptureProperty(CV_CAP_PROP_FPS)时OpenCV 2.3.1,这个函数总是返回0,这是假的,请帮帮我,谢谢
答案 0 :(得分:0)
cvSetCaptureProperty和cvGetCaptureProperty并不总是有效。另外,你试过fps = 30吗?
值得注意的是,您需要以与捕获fps相同的fps播放视频。
答案 1 :(得分:0)
cvGetCaptureProperty无法正常工作是一个已知问题,除非事先调用cvQueryFrame。