##名稱:圖像對象度與對比度調整(由軌跡條分別控制對比度和亮度值) ##平台:QT5.7.1+opencv3.2.0 ##時間:2017年12月13日 /***********建立QT控制台程序************/ #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>
using namespace std; using namespace cv; //全局變量聲明
Mat srcImage; Mat dstImage; int contrastValue; int brightValue; //const string WINDOW_NAME = "contrast&brightValue"; /*******改變圖像對比度和亮度值的回調函數*******/
void on_change(int,void*) { namedWindow("contrast&brightValue",1); for(int i = 0; i < srcImage.rows; i++) { for(int j = 0; j < srcImage.cols; j++) { for(int c = 0; c < 3; c++) { dstImage.at<Vec3b>(i,j)[c] = saturate_cast<uchar>((contrastValue * 0.01) * ( srcImage.at<Vec3b>(i,j)[c] ) + brightValue); } } } imshow("contrast&brightValue",dstImage); } int main() { srcImage = imread("/home/ttwang/11.jpg"); dstImage = Mat::zeros(srcImage.size(),srcImage.type()); contrastValue = 80;//設定對比度初值
brightValue = 80;//設定對亮度的初值
namedWindow("contrast&brightValue",1); //創建軌跡條
createTrackbar("對比度: ", "contrast&brightValue", &contrastValue, 300, on_change);//第二個參數不能為中文,該參數為中文時,我的運行不成功
createTrackbar("亮度: ","contrast&brightValue", &brightValue, 200, on_change); //進行回調函數初始化
on_change(contrastValue,0); on_change(brightValue,0); waitKey(0); return 0; }