我想知道是否有一种从Mat转换为QImage的快速方法。我有以下转换类:
VideoReader::VideoReader() {
cap = VideoCapture( CV_CAP_ANY );
}
QImage VideoReader::getFrame() {
if (waitKey(30) >= 0)
return;
Mat frame;
cap >> frame;
QImage dest = QImage((uchar*)frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888);
return dest;
}
此代码有效,但getFrame()方法大约需要20毫秒才能完成。我需要一些工作速度至少快两倍的东西。有什么方法可以优化这种/任何可以更快工作的替代转换方法吗?
谢谢!
答案 0 :(得分:1)
waitKey(30)
将暂停代码约30毫秒。
该行在该函数中没有多大意义,因此您最好将其删除。以你的方式创建一个QImage不应该花费超过几微秒,因为没有复制图像等等......但是cap >> frame
可能需要一些时间,这取决于你的捕获设备(但是你不能做太多反对这一点)。
如果您确实需要waitKey
,则应使用waitKey(1)
不要在那里浪费太多时间。