学习opencv 一幅图像的对比度和亮度调节

来源:互联网 发布:java模拟键盘输入 编辑:程序博客网 时间:2024/05/16 08:08

以下代码参照opencv开源的doc,仅作为自身以后回顾

公式如下:

#include <opencv2/opencv.hpp>using namespace cv;using namespace std;double alpha; //simple contrast controlint beta;int main(int argc, char ** argv){Mat image = imread( argv[1]);//不想设置命令参数argv[1]就直接写文件路径Mat new_image = Mat::zeros( image.size(),image.type());//Initialize values cout<<"Basic Linear Transforms"<<endl;cout<<"-----------------------"<<endl;cout<<"* Enter the alpha value [1.0 - 3.0]:";cin>>alpha;cout<<"* Enter the beat value [0 - 100]:";cin>>beta;//do the operation new_image(i,j) = alpha*image(i,j) + beta//method 1// for ( int y = 0;y < image.rows;y++ )// {// for (int x = 0;x<image.cols;x++ )// {// for ( int c = 0;c < 3; c++)// {// new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>(alpha*(image.at<Vec3b>(y,x)[c])+beta);// }// }// }//method 2image.convertTo(new_image, -1, alpha, beta);//这与上一个循环的效果相同//create windowsnamedWindow("Original Image",1);namedWindow("New Image",1);imshow("Original Image",image);imshow("New Image",new_image);//wait until user press some keywaitKey();return 0;}


效果图片如下,是设置2倍对比度,亮度统一增大50

原创粉丝点击