【问题标题】:Create video file using sequence of QPixmap in QT Creator- C++在 QT Creator-C++ 中使用 QPixmap 序列创建视频文件
【发布时间】:2015-11-27 10:58:04
【问题描述】:

我有 QWidget(命名为 screenshotLabel),并且它的内容不断变化。我可以将标签内容获取到 qpixmap(命名为 originalPixmap),如下所示。

originalPixmap = QPixmap(); 
QPixmap pixmap(screenshotLabel->size());
this->render(&pixmap);
originalPixmap = pixmap;

现在我想将它保存为视频文件。但是我做不到。如何将 QWidget 内容保存为视频文件?

【问题讨论】:

  • 我认为你不能使用一堆 Pixmap 在 Qt 中制作视频,但很想看看是否有人会发布解决方案!
  • @AlexanderTyapkov,有没有办法通过获取 QWidget 内容来制作视频?
  • 可能以类似的方式askubuntu.com/questions/258115/…

标签: c++ qt video qt-creator qpixmap


【解决方案1】:

我找到了一种使用 OpenCV VideoWriter 生成视频的方法。我将 cmets 留在了描述正在发生的事情的代码中。

originalPixmap = pixmap;
qImageSingle = originalPixmap.toImage(); // Convert QPixmap to QImage

// Get QImage data to Open-cv Mat
frame = Mat(qImageSingle.height(), qImageSingle.width(), CV_8UC3, qImageSingle.bits(), qImageSingle.bytesPerLine()).clone();

namedWindow("MyVideo", CV_WINDOW_AUTOSIZE);
imshow("MyVideo", frame);

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
try {
    imwrite("alpha2.png", frame, compression_params);
    VideoWriter video("out2.avi", CV_FOURCC('M','J','P','G'), 10, Size(qImageSingle.width(), qImageSingle.height()), true);
    for(int i=0; i<100; i++){
       video.write(frame); // Write frame to VideoWriter
    }
}
catch (runtime_error& ex) {
    fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
}

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 2013-03-17
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多