我花了几个小时尝试用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);
我做错了什么?
答案 0 :(得分:1)
IYUV编解码器应该内置,因此录像机始终可以创建此类型的文件。
您可以创建文件,因此权限是正确的。
你是否有充分的理由使用旧的iplimage而不是cv标准格式? 这是我要检查的第一件事。
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(或类似的东西,可以不记得了,例如
希望它有所帮助。