作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于分色算法,我需要对 std::vector
中的颜色值 (QRgb
) 进行平均。
您建议如何做?分别对 3 个分量求和然后取平均值?不然呢?
最佳答案
自 QRgb
只是一个 ARGB 格式的 32 位无符号整数,它不足以添加颜色,这很可能会导致溢出。还有QColor
这还不够,因为它对颜色分量使用定点 16 位整数,因此也无法处理有效 [0,1] 范围之外的颜色。因此,您不能为此使用 QRgb
或 QColor
,因为它们会将每个部分和限制在有效范围内。由于精度有限,您也不能在添加颜色之前预先划分颜色。
因此,您最好的选择实际上就是使用 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/
对于分色算法,我需要对 std::vector 中的颜色值 (QRgb) 进行平均。 您建议如何做?分别对 3 个分量求和然后取平均值?不然呢? 最佳答案 自 QRgb只是一个 ARGB 格式的 32
QImage source; QImage dest; for(unsigned y=0; y
我是一名优秀的程序员,十分优秀!