1.理论基础

                                         调整图像的亮度和对比度—opencv

两个参数 调整图像的亮度和对比度—opencv 和 调整图像的亮度和对比度—opencv 一般称作 增益 和 偏置 参数。我们往往用这两个参数来分别控制 对比度 和 亮度 。

你可以把 调整图像的亮度和对比度—opencv 看成源图像像素,把 调整图像的亮度和对比度—opencv 看成输出图像像素。这样一来,上面的式子就能写得更清楚些:

                                                                                                                  调整图像的亮度和对比度—opencv

其中, 调整图像的亮度和对比度—opencv 和 调整图像的亮度和对比度—opencv 表示像素位于 第i行 和 第j列 。

其中,α可以调整图像的对比度,β可以调整图像的亮度。

2.代码如下:

 1 #include<iostream>
 2 #include<opencv2/opencv.hpp>
 3 
 4 using namespace std;
 5 using namespace cv;
 6 
 7 int main(int argc, char **argv)
 8 {
 9     Mat src = imread("D:/meinv.jpg");
10     if (!src.data)
11     {
12         printf("Couldn't load the image......");
13         return -1;
14     }
15     namedWindow("源图像", CV_WINDOW_AUTOSIZE);
16     imshow("源图像", src);
17 
18     int height = src.rows;
19     int width = src.cols;
20     int channels = src.channels();
21      
22     Mat dst = Mat::zeros(src.size(),src.type());  //创建一个和原图像大小相同,类型相同,像素值为0的图像。
23     float alpha = 1.5;  //设置参数
24     float beta = 0;
25     
26     //对每个像素点的操作
27     for (int i = 0; i < height; i++)
28     {
29         for (int j = 0; j < width; j++)
30         {
31             if (channels == 3)     //如果是彩色图像
32             { 
33                 dst.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[0]) + beta);
34                 dst.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[1]) + beta);
35                 dst.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[2]) + beta);
36             }
37             else if (channels == 1)  //灰度图像
38             {
39                 dst.at<uchar>(i,j) = saturate_cast<uchar>(alpha*(src.at<uchar>(i, j)) + beta);
40                 
41             }
42         }
43     }
44     imshow("dst_image", dst);
45     waitKey(0);
46     return 0;
47 
48 }

3.显示效果:

(1)原图:

调整图像的亮度和对比度—opencv

(2)修改后的图像:

调整图像的亮度和对比度—opencv

还可以改变β的值 观察显示效果

相关文章:

  • 2021-11-11
  • 2021-11-11
  • 2021-07-24
  • 2021-08-05
  • 2022-12-23
  • 2021-12-28
  • 2022-12-23
  • 2021-09-01
猜你喜欢
  • 2022-12-23
  • 2021-05-13
  • 2021-07-07
  • 2022-12-23
  • 2021-11-08
  • 2021-10-04
  • 2021-11-11
相关资源
相似解决方案