在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。
理论:
图像变换可以看做如下:
像素变换–点操作
邻域变换–区域操作
其中图像亮度和对比度属于像素变换–点操作

α是对比度调节参数,
β是调节亮度。
一些主要API:
Mat new_image = Mat::zeros(image.size(),image.type()); //创建一个空白图像
saturate_cast< uchar>(value)确保值大小范围是0~255之间
Mat.at< Vec3b>(y,x)[index]=value //给每个像素点的每个通道赋值
代码参考:
#include<iostream>
#include<opencv2/core/core.hpp>
#include<highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>  
#include <math.h>
using namespace cv;
using namespace std;
int main()
{
    Mat src,dst; 
    src = imread("1.jpg");  
    char input_win[] = "input image";
    namedWindow(input_win,CV_WINDOW_AUTOSIZE);
    imshow(input_win,src);
    int height = src.rows;
    int width = src.cols;
    double alpha = 5.2;   //对比度参数
    double beta = 30;     //亮度参数
    //src.convertTo(m1,CV_64F);
    dst = Mat::zeros(src.size(),src.type());
    for(int row = 0;row <height;row++){
        for(int col = 0;col < width;col++){
            if(src.channels() == 3){                  //三通道数据
                float b = src.at<Vec3b>(row,col)[0];  //第一个通道是blue,第二个是green,第三个是red,每个像素是3个uchar类型的向量
                float g = src.at<Vec3b>(row,col)[1];
                float r = src.at<Vec3b>(row,col)[2];
                dst.at<Vec3b>(row,col)[0] = saturate_cast<uchar>(b*alpha+beta);   //限定范围大小
                dst.at<Vec3b>(row,col)[1] = saturate_cast<uchar>(g*alpha+beta);
                dst.at<Vec3b>(row,col)[2] = saturate_cast<uchar>(r*alpha+beta);
            }
            else if(src.channels() == 1){
                float v = src.at<uchar>(row,col);
                dst.at<uchar>(row,col) = saturate_cast<uchar>(v*alpha+beta); 
            }
        }
    }
    char output_title[] = "contrast and brightness change demo";
    namedWindow(output_title,CV_WINDOW_AUTOSIZE);
    imshow(output_title,dst);
    waitKey(0);
    return 0;
}效果展示:

源码和原图片请到Github下载:
 https://github.com/MRwangmaomao/OpencvBrightnessTest-Project.git
————————————————
版权声明:本文为CSDN博主「南山二毛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16481211/article/details/79564909


 少有人走的路
少有人走的路



















