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. 结束

  • 相关阅读:
    Redis-数据类型
    文件转二进制流拆分与组装
    word 文件转PDF 预览
    查询数据库还原时间
    Window10主机连接到Docker 中的mysql 数据库
    sqlServer 执行存储过程结果存表中
    启动mysql 镜像
    Java类型转换细节
    IDEA常用插件
    IDEA控制台中文乱码
  • 原文地址:https://www.cnblogs.com/Reyzal/p/5021379.html
Copyright © 2011-2022 走看看