#include <iostream>
#include <opencv2/opencv.hpp>
#define WITH 600
#define window1 "【原图】"
#define window2 "【效果图】"
using namespace cv;
using namespace std;
Mat src, image;
int contrast_bar=10, bright_bar=80;//(0-300之间),0-200之间,其实可以自己随便设,然后看效果。
//图像对比度,亮度的线性调整
void on_contrast_bright(int, void*);
int main()
{
//1.读取原图.
src = imread("女战士.jpg");
resize(src,src,Size(),0.4,0.4);
if (!src.data)
{
cout << "erro,no read image!!";
return 1;
}
imshow(window1,src);
//2.准备全局变量
//3.窗口,回调函数,滑动条。
namedWindow(window2,1);
createTrackbar("对比度调整",window2,&contrast_bar,30,on_contrast_bright);
createTrackbar("亮度调整",window2,&bright_bar,200,on_contrast_bright);
imshow(window2,src);
waitKey(0);
return 0;
}
//3.回调函数,调整对比度和亮度。
void on_contrast_bright(int, void*)
{
image = Mat::zeros(src.size(), src.type());
//2.对图片进行处理。
int cl = src.cols;
int cr = src.rows;
int cc = src.channels();
for (int i = 0; i < cr; i++)
{
for (int j = 0; j < cl; j++)
{
for (int k = 0; k < cc; ++k)
{
image.at<Vec3b>(i, j)[k] = saturate_cast<uchar>(contrast_bar * 0.1 * src.at<Vec3b>(i, j)[k] + bright_bar);
}
}
}
imshow(window2, image);
}
图像对比度,亮度的线性调整
最新推荐文章于 2024-03-14 15:35:33 发布