圖片下載地址:
鏈接: https://pan.baidu.com/s/1dtEdFa5XWG4xi1aXv5GbtQ 提取碼: cteu
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int g_nContrastValue; //對比度;
int g_nBrightValue; //亮度;
void on_contrastAndBright(int, void*);
Mat img_src;
Mat img_dist;
int main()
{
//讀取圖片
img_src = imread("../data/5_4_image.jpg");
img_dist = Mat::zeros(img_src.size(), img_src.type());
g_nBrightValue = 80;
g_nContrastValue = 80;
//創建toolbar 控件
namedWindow("image");
namedWindow("imag_src");
createTrackbar("亮度", "image", &g_nBrightValue, 300, on_contrastAndBright);
createTrackbar("對比度", "image", &g_nContrastValue, 200, on_contrastAndBright);
//註冊回調函數
on_contrastAndBright(g_nBrightValue, 0);
on_contrastAndBright(g_nContrastValue, 0);
//顯示圖片
imshow("image", img_src);
while (char(waitKey(1)) != 'q'){}
return 0;
}
//修改亮度 對比度函數
void on_contrastAndBright(int, void*)
{
for (int y=0; y < img_dist.rows; y++)
{
for (int x = 0; x < img_dist.cols; x++)
{
for (int c = 0; c < 3; c++)
{
img_dist.at<Vec3b>(y, x)[c] = saturate_cast<uchar>((g_nContrastValue * 0.01) * (img_src.at<Vec3b>(y, x)[c]) + g_nBrightValue);
}
}
}
imshow("imag_src", img_src);
imshow("image", img_dist);
}