OpenCV转换到慢

OpenCV convertTo slow

本文关键字:转换 OpenCV      更新时间:2023-10-16

我有一张cv::Mat fooImage 1000*1000 像素CV_32F格式的图像。

现在我想显示图像,我使用

fooImage.convertTo(displayImage,CV_8UC1)

但是,仅此行就需要大约 5 毫秒。这正常吗??如何快速将CV_32F垫图像转换为CV_8UC1

谢谢!

这听起来很慢,但 convertTo() 可能不是特别优化使用 SSE2 或其他任何东西。

您正在从 RAM 读取 4Mb,分配 1Mb,执行 400 万浮点运算并将 1Mb 写回 RAM,因此毫秒并非不合理。

您可以编写一个简单的循环,只需将每个值乘以 255.0 即可将图像数据转换为 uchar

是否包括显示图像的时间?您正在创建一个仍然是 8 位灰度的"displayImage",在显示时必须将其转换为 RGB 或 RGBA 图像