1

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

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

fooImage.convertTo(displayImage,CV_8UC1)

但是,仅这条线就需要大约 5ms。这正常吗??如何快速将CV_32FMat 图像转换为CV_8UC1?

谢谢!

4

1 回答 1

2

这听起来很慢,但 convertTo() 可能并不是特别适合使用 SSE2 或任何东西。

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

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

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

于 2012-12-14T21:15:44.253 回答