[英]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.