c++ - "WARNING: Could not create empty movie file container"在 OpenCV 中是什么意思?

标签 c++ opencv compiler-errors codec

我正在学习 OpenCV 书籍的教程,但以下代码不起作用:

#include <iostream>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace std;

int main() {
    string arg1 = "new.mov";
    string arg2 = "mov.mov";
    CvCapture* capture = 0;
    capture = cvCreateFileCapture(arg1.c_str());
    if(!capture){
        return -1;
    }
    IplImage *bgr_frame=cvQueryFrame(capture);
    double fps = cvGetCaptureProperty (
            capture,
            CV_CAP_PROP_FPS
    );
    CvSize size = cvSize(
            (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
            (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH)
    );
    CvVideoWriter* writer = cvCreateVideoWriter(
        arg2.c_str(),
        CV_FOURCC('N', 'T', 'S', 'C'),
        fps,
        size
    );
    IplImage* logpolar_frame = cvCreateImage(
            size,
            IPL_DEPTH_8U,
            3
    );
    while((bgr_frame=cvQueryFrame(capture)) != NULL){
        cvLogPolar(
                bgr_frame, logpolar_frame,
                cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2),
                40,
                CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS
                );
                cvWriteFrame(writer, logpolar_frame);
    }
    cvReleaseVideoWriter(&writer);
    cvReleaseImage(&logpolar_frame);
    cvReleaseCapture(&capture);
    return 0;
}

当我运行代码时它没有给我一个错误——而是程序输出到控制台:

WARNING: Could not create empty movie file container.

接着是 100 行左右:

Didn't successfully update movie file.

此错误(或任何名称)是什么意思,是什么原因导致的?

我不知道这是否有帮助,但它曾经给我一个关于编解码器的错误(在书中是 MJPG)所以我更改了 CV_FOURCC('M', 'J', 'P' , 'G')CV_FOURCC('N', 'T', 'S', 'C')

最佳答案

尝试将 CV_FOURCC('N', 'T', 'S', 'C') 更改为 CV_FOURCC('D', 'I', 'V', ' X')。这是 manual给你。

可能的编解码器:

CV_FOURCC('P','I','M','1')    = MPEG-1 codec
CV_FOURCC('M','J','P','G')    = motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

关于c++ - "WARNING: Could not create empty movie file container"在 OpenCV 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086991/

相关文章:

c++ - G++对 `WinMain'的 undefined reference (无IDE)

c++ - 给函数赋值有什么作用?关于虚函数

c++ - 从 C++ 链接到 Fortran 库 (Lapack)

c++ - 为什么 "using namespace"会尝试在该命名空间中为 MSVC 实例化模板

c++ - 调试运行良好,但不在 Release模式下

c++ - OpenCV destroyWindow() 不执行任何操作。

c++ - 在 OpenCV 中设置透明度不起作用

c++ - 以非 root 用户身份运行 ntpdate

objective-c - 架构 i386 的 undefined symbol "_OBJC_CLASS_$_Appirater"

lua - 尝试加载库;出现 "bad image"错误