1

我花了几个小时试图用CvVideoWriter. 我总是得到一个大小为 5.54KB 且没有帧的文件。我检查了是否CvVideoWriter不为空,但不是。我还尝试显示我的 IplImagecvShowImage并正确显示。我尝试了多种编解码器(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);

我究竟做错了什么?

4

2 回答 2

1

应该内置 IYUV 编解码器,以便 videowriter 始终可以创建这种类型的文件。

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

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

http://docs.opencv.org/

附言。如果您不显示图像,则不需要 waitkey()。

于 2013-01-05T18:37:57.770 回答
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函数未定义(或类似的东西,不记得了)例如

希望能帮助到你。

于 2013-01-05T18:47:11.153 回答