【问题标题】:Qt OpenCV write video from capture frame, not savingQt OpenCV从捕获帧写入视频,不保存
【发布时间】: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

【问题讨论】:

    标签: qt opencv qt-creator video-capture


    【解决方案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。我认为人们遇到同样的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 2019-09-14
      • 2020-12-19
      相关资源
      最近更新 更多