【发布时间】:2016-08-01 17:10:28
【问题描述】:
我想知道是否有一种从 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 毫秒才能完成。我需要一些工作至少快两倍的东西。有什么方法可以优化这个/任何可以更快地工作的替代转换方法?
谢谢!
【问题讨论】:
-
删除
if (waitKey(30) >= 0) return;大约需要 30 毫秒 -
谢谢,仍然需要大约 15 毫秒,一定是相机延迟。
-
waitKey(1)在典型的 Windows 系统上消耗大约 5-10 毫秒,afaik。如果没有图像尚未准备好,相机通常会阻止捕获调用,因此如果您的相机具有例如 30 fps 的速度,则仅调用cap >> frame应该需要大约 33 毫秒(如果没有其他任何东西会在两次调用之间消耗时间)。跨度>