OpenCV入门:(五:更改图片对比度和亮度)

1. 理论

图片的转换就是将图片中的每个像素点经过一定的变换,得到新像素点,新像素点组合成一张新的图片。

改变图片对比度和亮度的变换如下:

image

其中α和β被称作增益参数(gain parameter)和偏差参数(bias parameter),分别控制对比度和亮度。

2. 实现代码

使用上述公式实现改变对比度和亮度的代码如下:

void ContrastAndBrightness(const Mat& Src,Mat& Dst,double alpha,double beta)
{
    Dst = Mat::zeros(Src.size(),Src.type());
    for (int y = 0; y < Src.rows; y++)
    {
        for (int x = 0; x < Src.cols; x++)
        {
            for (int c = 0; c < 3; c++)
            {
                Dst.at<Vec3b>(y,x)[c] = saturate_cast<uchar>(alpha * (Src.at<Vec3b>(y,x)[c]) + beta);
            }
        }
    }
    namedWindow("Src Image");
    namedWindow("Dst Image");

    imshow("Src Image",Src);
    imshow("Dst Image",Dst);

    waitKey();
}

使用OpenCV自带函数处理如下:

Src.convertTo(Dst, -1, 2.2, 20);

3. 处理结果

以下分别是alpha设置为1.5,beta设置为30时两种情况的处理结果,处理结果相差不多,但是使用时尽量调用OpenCV提供的函数。

image

image

4. 结束

原文链接: https://www.cnblogs.com/Reyzal/p/5021379.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/225417

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午12:48
下一篇 2023年2月13日 下午12:48

相关推荐