Learning_Opencv(一)使用摄像头录制视频并逐帧写入文件

来源:互联网 发布:linux如何查看path 编辑:程序博客网 时间:2024/05/19 20:43

遇到的问题:

按照书上的代码,储存到硬盘上的文件为0KB.


解决办法:

将解码器改为"XVID".

即将代码改为:CvVideoWriter* video  = cvCreateVideoWriter("camera1.avi", CV_FOURCC('X', 'V', 'I', 'D'), 8,
      cvSize(frame->width, frame->height));


具体实现代码如下:

#include <opencv\cv.h>#include <opencv\cxcore.h>#include <opencv\highgui.h>int main(){CvCapture* capture = cvCreateCameraCapture(0);IplImage* frame = NULL;frame = cvQueryFrame(capture); //首先取得摄像头中的一帧CvVideoWriter* video  = cvCreateVideoWriter("camera1.avi", CV_FOURCC('X', 'V', 'I', 'D'), 8,cvSize(frame->width, frame->height));//8帧/s防止速度过快while (1) // 让它循环200次自动停止录取{frame = cvQueryFrame(capture); //从CvCapture中获得一帧cvWriteFrame(video, frame); cvShowImage("Camera Video", frame); //显示视频内容的图片if (cvWaitKey(2) > 0)break; //有其他键盘响应,则退出}cvReleaseVideoWriter(&video);cvReleaseCapture(&capture);cvDestroyWindow("Camera Video");return 0;}



另外自己认为,如果是打开视频文件,然后进行处理,写入文件,则应选择相应的解码器。

方法如下:

long l = (long)cvGetCaptureProperty(capture, CV_CAP_PROP_FOURCC);char *ff = (char *) (&l);printf("fourcc = <%c%c%c%c>\n" , fourcc[3], fourcc[2], fourcc[1], fourcc[0]);



0 0
原创粉丝点击