码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-12-05 14:10:24      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

1. 理论

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

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

技术分享

其中α和β被称作增益参数(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提供的函数。

技术分享

技术分享

4. 结束

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

标签:

原文地址:http://www.cnblogs.com/Reyzal/p/5021379.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!