opencv 用摄像头录制视频并储存的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 用摄像头录制视频并储存的问题相关的知识,希望对你有一定的参考价值。
代码如下
#include "cv.h"
#include "highgui.h"
#include <iostream>
#include <Windows.h>
using namespace std;
int main(int argc,int* argv)
DWORD a,b;
CvCapture* capture;
capture=cvCreateCameraCapture(-1);
assert(capture!=NULL);
IplImage* frame;
double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
CvVideoWriter* writer=cvCreateVideoWriter("New.avi",CV_FOURCC('X','V','I','D'),5,cvSize(640,480));
cvNamedWindow("Video");
a=GetTickCount();
while (1)
frame=cvQueryFrame(capture);
if (!frame) break;
cvShowImage("Video",frame);
cvWriteFrame(writer,frame);
b=GetTickCount();
cout<<b-a<<endl;
if (cvWaitKey(200)>0) break;
a=b;
cvReleaseImage(&frame);
cvReleaseVideoWriter(&writer);
cvDestroyWindow("Video");
return 0;
其中a表示录制上一帧录制完毕的时间 b表示这一帧录制完毕的时间。
但是录制下来的帧率只能在5以下
同样的程序
当我 cvWaitKey(1)时储存并显示一张图耗费170ms左右
但是cvWaitKey(200)也只耗费203ms
cvWaitKey(2000)耗费2012ms
为什么耗时会这么奇怪 在等待1ms时耗时170ms 而等待200ms时只耗时203ms?
还有 如何提高帧率 如果我将cvCreaterVideoWriter里的帧率调的更高的话 视频就和快进了一样
改变cvCreaterVideoWriter里面的帧率并将cvWaitKey的时间改为1000/帧率追问
但我设为cvWaitKey(1)他运行还是要170ms啊 缩不短了 每秒五帧的视频看起来很难受的
追答这可能是因为你的其他地方调用消耗时间太多了,比如你的主板性能不佳,抓取一帧影像要耗费一段时间,写入也要时间的
cvWaitKey精度是不高,但是也不会像你说的那样很低
你可以用缓冲区,多线程等方法来提升帧频
opencv不能录制桌面的视频吗?只能录制摄像头的视频
求opencv录制桌面视频的函数
参考技术A 录屏应该需要调用Windows的API吧追问我已经有办法录制桌面(非windows API),但是opencv的方法没用过,不会用,网上的都是摄像头录制
以上是关于opencv 用摄像头录制视频并储存的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 opencv 和 pyaudio 从网络摄像头录制视频和音频