OpenCV的cvWriteFrame(..)什么都不做

时间:2013-01-05 10:54:01

标签: c++ qt video opencv

我花了几个小时尝试用CvVideoWriter写一个avi文件。我总是得到一个大小为5.54KB的文件,里面没有框架。我检查CvVideoWriter是否为空,但不是。我还尝试用cvShowImage显示我的IplImage并正确显示。我尝试了多个编解码器(DIVX,H264,..)。

我发现,当VideoWriter定义如下时,该函数会将帧保存在jpg文件中:

CvVideoWriter* recorder = cvCreateVideoWriter("test0001.jpg", CV_FOURCC('I', 'Y', 'U', 'V'), -1, Size(w,h), true);

这是我的计划:

IplImage* myIplFrame=...;
CvVideoWriter* recorder = cvCreateVideoWriter("test.avi", CV_FOURCC('I', 'Y', 'U', 'V'), 10, Size(w,h), true);

cvShowImage("test",myIplFrame); //showing image properly
cvWriteFrame(recorder, myIplFrame);
cvWaitKey(500); //not helping

cvReleaseVideoWriter(&recorder);

我做错了什么?

2 个答案:

答案 0 :(得分:1)

IYUV编解码器应该内置,因此录像机始终可以创建此类型的文件。

您可以创建文件,因此权限是正确的。

你是否有充分的理由使用旧的iplimage而不是cv标准格式? 这是我要检查的第一件事。

请参阅http://docs.opencv.org/

PS。如果您没有显示图像,则不需要waitkey()。

答案 1 :(得分:0)

我在SO上发现了另一个类似的线程,有人提到你应该用MinGW而不是VS编译。我这样做并包含新库并在.pro文件(Qt)中包含这样的路径:

INCLUDEPATH += C:\OpenCV-2.3.1\mingwBuild\install\include

LIBS += -LC:\\OpenCV-2.3.1\\opencv\\build\\x86\\mingw\\lib \
    -lopencv_core231 \
    -lopencv_highgui231

注意我是如何使用opencv文件夹中的库的;这是具有源的文件夹,在您配置并使用CMake生成它之后。

另一个提示,你,读者,有同样的问题是如果cv :: Mat无法识别或你得到一些奇怪的错误 - simpleFree 函数undefined(或类似的东西,可以不记得了,例如

希望它有所帮助。