c++ - 在 Mac OSX 中使用 cv::VideoWriter 会产生 "WARNING: Could not create empty movie file container."

标签 c++ xcode macos opencv

我正在尝试在 Mac OSX 上使用 C++ 中的 OpenCV 4.3.2 将图像列表转换为视频文件。该项目正在 XCode 中编译。每次运行我的代码时,都会出现以下输出:

WARNING: Could not create empty movie file container.

Didn't successfully update movie file.

第一个警告是由于:

    writer.open(argv[2],codec,fps,size);

关于更新电影文件的第二部分来自:

    writer << im;

完整代码如下:

#include <cv.h>
#include <highgui.h>

int main( int argc, char** argv )
{
    /*
        Skipping unrelated code
    */

    // Set FPS of movie
    double fps = 30;
    // Set frame size of movie
    cv::Size size = cv::Size(1920,1080);
    // VideoWriter stream to write images to
    cv::VideoWriter writer;
    int codec = CV_FOURCC('D', 'I', 'V', 'X');

    std::cout << "Using codec " << codec << std::endl;

    // Open VideoWriter stream
    writer.open(argv[2],codec,fps,size);


    // Verify that the VideoWriter is open
    if(!writer.isOpened())
    {
        std::cout << "VideoWriter unable to open" << std::endl;
        return -3;
    }

    // Structure to hold image
    cv::Mat im;

    for(int i = 0; i < photos.size(); i++)
    {
        // Read image from file
        im = cv::imread(photos[i].c_str(), 1 );
    
        if(im.data != NULL )
        {
            std::cout << "Writing " << photos[i] << " to file." << std::endl;
            // Resize it to match video output
            cv::resize(im,im,size);
            // Write image to VideoWriter stream
            writer << im;
        }
        else
        {
            std:: cout << "Unable to read file " << photos[i] << std::endl;
        
            return -4;
        }
    }

    return 0;
}

我看到其他人也有类似的错误,但没有一个解决方案可以解决它(例如更改编解码器等)

最佳答案

我遇到了同样的问题。我尝试更改代码和格式。问题似乎是当我在一个听起来很愚蠢的字符串中创建目录时。 (Mac OSX, C++, Eclipse, opencv)

string directory = "directory/videos/";
VideoWriter out_capture(directory, 
    CV_FOURCC('D', 'I', 'V', 'X'), frame_rate, Size(512,512));

当我直接添加目录时,它起作用了:

VideoWriter out_capture("directory/videos/", 
    CV_FOURCC('D', 'I', 'V', 'X'), frame_rate, Size(512,512));

如果有人提出更好的解决方案,我很乐意听到。

关于c++ - 在 Mac OSX 中使用 cv::VideoWriter 会产生 "WARNING: Could not create empty movie file container.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553494/

相关文章:

html - 如何通过 Swift 从 macOS 中的网页获取文本?

ruby-on-rails - Mac OSX 10.5.8 上的 Ruby on Rails 3.1.1

Swift-4 MacOS 检测鼠标滚轮在 NSTextField 上滚动?

C++ cin.getline 只读取一个字符

Xcode 持续集成机器人在 Git 强制推送后失败

objective-c - 核心数据转换器

ios - 可以在聊天应用程序的UITable View 中实现按钮吗?

c++ - 预测迭代器

c++ - 在Windows下杀死所有未列入白名单的进程

c++ - 高斯模糊不均匀