#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
//全局函数声明
static void on_contreastBright(int,void *);
static void showhelptext();
//声明全局变量
int g_nContrasValue;
int g_nBrightValue;
Mat g_srcImage, g_dstImage;
int main(){
//读取图片
g_srcImage = imread("timg2.jpg");
if (!g_srcImage.data) {
cout << "读取图片失败,请确认目录下是否有该图片" << endl;
return false;
}
g_dstImage = Mat::zeros(g_srcImage.size(), g_srcImage.type());
//设定对比度及亮度初始值
g_nContrasValue = 60;
g_nBrightValue = 60;
//创建窗口
namedWindow("效果图窗口", 1);
createTrackbar("对比度", "效果图窗口", &g_nContrasValue, 300, on_contreastBright);
createTrackbar("亮 度", "效果图窗口", &g_nBrightValue, 200, on_contreastBright);
//进行回调函数初始化
on_contreastBright(g_nContrasValue, 0);
on_contreastBright(g_nBrightValue, 0);
//程序退出
while (char(waitKey(1)!='q'))
{
}
return 0;
}
static void on_contreastBright(int, void *){
namedWindow("原始图窗口", 1);
for (int y = 0; y < g_srcImage.rows; y++)
{
for (int x = 0; x < g_srcImage.cols;x++)
{
for (int c = 0; c < 3; c++)
{
g_dstImage.at<Vec3b>(y, x)[c] = saturate_cast<uchar>((g_nContrasValue*0.01)*(g_srcImage.at<Vec3b>(y, x)[c]) + g_nBrightValue);
}
}
}
//显示图像
imshow("原始图窗口", g_srcImage);
imshow("效果图窗口", g_dstImage);
}