gpt4 book ai didi

qt - 平均 QRgb 值

转载 作者:行者123 更新时间:2023-12-04 13:55:36 28 4
gpt4 key购买 nike

对于分色算法,我需要对 std::vector 中的颜色值 (QRgb) 进行平均。

您建议如何做?分别对 3 个分量求和然后取平均值?不然呢?

最佳答案

QRgb只是一个 ARGB 格式的 32 位无符号整数,它不足以添加颜色,这很可能会导致溢出。还有QColor这还不够,因为它对颜色分量使用定点 16 位整数,因此也无法处理有效 [0,1] 范围之外的颜色。因此,您不能为此使用 QRgbQColor,因为它们会将每个部分和限制在有效范围内。由于精度有限,您也不能在添加颜色之前预先划分颜色。

因此,您最好的选择实际上就是使用 float 对各个分量求和,然后将它们除以向量大小:

std::vector<QRgb> rgbValues;

float r = 0.0f, g = 0.0f, b = 0.0f, a = 0.0f;
for(std::vector<QRgb>::const_iterator iter=rgbValues.begin();
iter!=rgbValues.end(); ++iter)
{
QColor color(*iter);
r += color.redF();
g += color.greenF();
b += color.blueF();
a += color.alphaF();
}

float scale = 1.0f / float(rgbValues.size());
QRgb = QColor::fromRgbF(r*scale, g*scale, b*scale, a*scale).rgba();

关于qt - 平均 QRgb 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8892656/

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