gpt4 book ai didi

c++ - 快速图像处理

转载 作者:太空狗 更新时间:2023-10-29 19:44:37 25 4
gpt4 key购买 nike

我有一个 10X10 的数组,其值介于 1 到 10 之间。现在假设我想为每个值赋予独特的颜色(比如 1 变蓝 2 变红等)。我正在使用 qt qimage 来表示图像。这是我正在做的

read array from disk. store in a[10][10]
generate a hash table in which each value in the array has a corresponding qRGB
for entire array
get value (say a[0][0])
search hashtable, get equivalent qRGB
image.setPixel(coord,qRGB)

这是最快的方法吗?我有一个大图像,扫描每个像素,在哈希表中搜索它的值,设置像素有点慢。有没有更快的方法?

最佳答案

确实有一个更快的方法:创建一个无符号字符数组并直接修改像素值。然后从这个数组创建一个 QImage。调用 setPixel() 非常昂贵。

unsigned char* buffer_;
buffer_ = new unsigned char[4 * w * h];
//...


for(int i = 0; i < h; i++){
for(int j = 0; j < w; j++){

unsigned char r, g, b;
//...

buffer_[4 * (i * w + j) ] = r;
buffer_[4 * (i * w + j) + 1] = g;
buffer_[4 * (i * w + j) + 2] = b;
}
}

这是为 QImage::format_RGB32 而你的 paintEvent() 看起来像这样:

void paintEvent(QPaintEvent* event){
//...
QImage image(buffer_, w, h, QImage::Format_RGB32);
painter.drawImage(QPoint(0, 0), image);
}

关于c++ - 快速图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084012/

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