繁体   English   中英

从灰度图像到QImage的快速转换

[英]Fast conversion from gray level image to QImage

在一个应用程序中,我处理的图像中的每个像素都是无符号或浮点数,每个值都是具有给定灰度等级的像素。 我有可用的资源,因此可以自由访问图像的数据。

我需要使用qt框架显示/保存和加载这些图片。 当前,处理转换的唯一方法是获取并设置每个像素,事实证明这有点慢。

还有其他方法可以转换这些图像吗?

QImage有一个构造函数,该构造函数使用指向现有缓冲区/图像的指针:

    QImage ( uchar * data, int width, int height, Format format )

它不拥有缓冲区的所有权,也不复制内容,因此您有责任确保缓冲区在QImage整个生命周期内都有效。

注意: QImage需要32位对齐的图像行,因此您可能需要按行将图像复制到具有适当填充的新缓冲区中。 您只有无符号或浮点像素,因此它不适用于您(已经有32位值),但是请记住,如果将来您使用不同的像素类型,请记住这一点。

代替使用QImage :: setPixel,您应该直接访问图像缓冲区。

创建具有所需格式,宽度和高度的图像后,可以使用QImage :: bits()访问内存缓冲区,也可以使用QImage :: scanLine()检索指向图像中每行开头的指针并直接在内存中设置像素:这比为每个像素调用setPixel()快得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM