opencv之对比度和亮度的调节
公式
\[g(x) = a*f(x) + b
\]
注:\(f(x)\) 为输入图像, \(g(x)\) 为输出图像。
注:\(a\)为增益,用于控制图像的对比度; \(b\)为偏置,用于控制图像的亮度。
代码
for (int y = 0; y < image.rows; ++y)
{
for (int x = 0; x < image.cols; ++x)
{
for (int c = 0; c < image.channel; ++c)
{
new_image.at<cv::Vec3b>(y, x)[c] = cv::saturate_cast<uchar>(contrast_value * (image.at<cv::Vec3b>(y, x)[c]) + bright_value);
}
}
}
注: cv::saturate_cast<uchar>()
是为了防止结果超出范围,用于溢出保护。
注:为了对比效果一般, constrast_value取值范围为: 0.0 -3.0之间。
chrislzy: 如有疑惑,错误或者建议,请在评论区留下您宝贵的文字; 转载请注明作者和出处,未经允许请勿用于商业用途!