使用C ++,Qt调整亮度,对比度,Gamma

时间:2011-02-12 23:56:35

标签: c++ image-processing

正确调整图像的亮度,对比度和Gamma的最简单方法是什么? “正确”这个词在这里,因为我知道如何不正确地执行这些调整:遍历所有RGB像素并对每个通道执行以下操作:

int changeBrightness( int value, int brightness) {
    return qBound<int>(0, value + brightness * 255 / 100, 255);
}
int changeContrast( int value, int contrast ) {
    return qBound<int>(0, int(( value - 127 ) * contrast / 100 ) + 127, 255 );
}
int changeGamma( int value, int gamma ) {
    return qBound<int>(0, int( pow( value / 255.0, 100.0 / gamma ) * 255 ), 255 );
}

虽然此代码会增加亮度/对比度/伽玛变化的效果,但看起来并不是很好。像Photoshop这样的专业成像软件可以做得更好。

处理这类东西的最佳图书馆是什么?我知道有ImageMagick,但它真的很重,我不想只链接到数百个功能。有没有轻量级替代品?

1 个答案:

答案 0 :(得分:2)

definetely OpenCV