zoukankan      html  css  js  c++  java
  • 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. 结束

  • 相关阅读:
    浅谈3次登录错误
    JDK一键安装,配置环境
    火炬之光2_辅助工具 内存读写相关
    学习资料
    如何在google colab加载kaggle数据
    Trie树
    日常
    Kmeans
    【leet-code】135. 加油站
    Mac CLion下OpenGL环境配置
  • 原文地址:https://www.cnblogs.com/Reyzal/p/5021379.html
Copyright © 2011-2022 走看看