Qt OpenCV从捕获帧写入视频,不保存

Posted

技术标签:

【中文标题】Qt OpenCV从捕获帧写入视频,不保存【英文标题】:Qt OpenCV write video from capture frame, not saving 【发布时间】:2018-01-29 18:50:56 【问题描述】:

我可以成功保存从 c++ opencv 捕获的视频,没有问题。

类似的代码没有捕获视频。刚打开 out.avi 。而且只有 6 kb。

我将代码放在 showframe func 中。没有调整大小仅供参考。

有人在 Qt 上使用过 opencv videowriter 吗?

void Widget::show_frame(Mat &image)

    Mat resized_image = image.clone();
    video.write(image);

    int width_of_label = ui->label_camera->width();
    int height_of_label = ui->label_camera->height();

    Size size(width_of_label, height_of_label);

//    cv::resize(image, resized_image, size);
    cvtColor(image,image,CV_BGR2RGB);
    cvtColor(resized_image, resized_image, CV_BGR2RGB);

ps : 平台 MacOSX

【问题讨论】:

【参考方案1】:

我也遇到了和你一样的问题,试过很多解决办法,我觉得你可以把videowriter()的第五个参数设置为false。即 VideoWriter out = VideoWriter(video_name, CV_FOURCC('D', 'I', 'V', 'X'),frame_fps,Size(frame_width,frame_height),false)。这对我有用!

【讨论】:

【参考方案2】:

确保您的应用程序可以访问 opencv_ffmpeg*.dll。例如,将其放在工作目录或 PATH 变量中。

也尝试不同的编解码器。到目前为止,Afaik,MJPG 确实在所有经过测试的机器/系统上工作。

【讨论】:

我在 mac os X 。当我尝试使用 C++11 编写简单代码时,它正在工作并编写 mpeg 或 mjpg。但是当我尝试使用 QTCreator 将它嵌入到 QT 时,它正在打开文件以进行写入,但它冻结在 6 KB 。为什么 QT 没有将图像作为视频添加到我找不到的输出中。 作者是 cv::VideoWriter,对吧?在 Qt 中使用它应该没有问题。你能测试一下.isOpen吗?您可以添加创建/打开编写器的类结构和函数吗? 如果你在 main 函数中创建一个 VideoWriter 并在进入 Qt 事件循环之前写入一些帧,那是否有效? 我会在主循环中尝试。我找到了link。我认为人们遇到同样的问题。

以上是关于Qt OpenCV从捕获帧写入视频,不保存的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV,从相机捕获并保存到文件

OpenCV + Qt 制作视频播放器

OpenCV 从 YUYV 像素格式视频帧创建 YUV420 或灰度 Mat 对象

为啥 Objective-C 不显示 OpenCV 捕获的视频的输出帧?

OpenCV-python视频入门

MacOS 上的视频捕获