一、概述
案例:輸出一張原圖,增加該圖片的亮度及對比度
基本概念:
亮度:RGB的像素值范圍是0~255,我們稱從0——>255隨着像素值的增加圖像會越來月亮,反之會越來越暗。所以我們可以通過對圖像像素加減來改變圖像的亮度。
對比度:其反應的是圖像中各像素的差異(層次感、落差感),差異越大對比度越大,圖像越清晰。差異越小對比度越小,圖像越模糊。
二、示例代碼
Mat src = imread(filePath); imshow("src",src); int height = src.rows; int width = src.cols; int channels = src.channels(); double alpha = 1.2;//像素增加權重,即:每個像素都擴大1.2倍,用於增加圖像的對比度 double beta = 50;//用於增加亮度 Mat dst;//輸出圖像 dst = Mat::zeros(src.size(),src.type());//創建一個都是0的Mat,即純黑色的mat //下面是增加亮度及對比度的關鍵代碼 for(int y = 0;y<height;y++){ for(int x = 0;x<width;x++){ dst.at<Vec3b>(y,x)[0] = saturate_cast<uchar>(alpha*src.at<Vec3b>(y,x)[0]+beta); dst.at<Vec3b>(y,x)[1] = saturate_cast<uchar>(alpha*src.at<Vec3b>(y,x)[1]+beta); dst.at<Vec3b>(y,x)[2] = saturate_cast<uchar>(alpha*src.at<Vec3b>(y,x)[2]+beta); } } QImage qImage = QImage(dst.data,dst.cols,dst.rows,dst.step,QImage::Format_BGR888); label->setFixedSize(QSize(qImage.width(),qImage.height())); label->setScaledContents(true); label->setPixmap(QPixmap::fromImage(qImage));
三、示例圖片