gpt4 book ai didi

c++ - Qt QImage 显示错误的灰度图像

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:27 26 4
gpt4 key购买 nike

我想在 Qt 5.12 中将 0 到 255 之间的整数值矩阵可视化为灰度图像。首先,我构建了一个示例 256x256 uchar 数组,每行的值都在 0 到 255 之间。然后我尝试以 QImage 和 format_grayscale 作为格式显示图像。但令人困惑的是,生成的图像在最后一行中包含受干扰的像素。

结果图像

我还创建了一个灰度色图并尝试使用 format_indexed8,但结果相同。这是我的代码。

uchar imageArray[256][256];
for (int i = 0; i < 256; i++)
{
for (int j = 0; j < 256; j++)
{
imageArray[i][j] = uchar(j);
}
}

QImage image(&imageArray[0][0],
256,
256,
QImage::Format_Grayscale8);

最佳答案

我的猜测是您的缓冲区在显示之前已被释放并部分被覆盖。当使用不执行深度复制的构造函数时,您有责任确保数据缓冲区保持有效。

引自the Qt documentation :

Constructs an image with the given width, height and format, that uses an existing memory buffer, data. The width and height must be specified in pixels. bytesPerLine specifies the number of bytes per line (stride).

The buffer must remain valid throughout the life of the QImage and all copies that have not been modified or otherwise detached from the original buffer. The image does not delete the buffer at destruction. You can provide a function pointer cleanupFunction along with an extra pointer cleanupInfo that will be called when the last copy is destroyed.

关于c++ - Qt QImage 显示错误的灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55235565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com