Opencv---画像コントラストと輝度調整

1500 ワード

画像の明るさとコントラストを調整する操作は画素変換---点操作に属する
数学の原理:
       g(x,y) = af(x,y)+b; a>0,bは利得変数
 
コード実装:
#include 
#include 

using namespace cv;

int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("C:/usr/opencv-test/Testpictures/sight.jpg");
	if (src.empty())
	{
		printf("load image failed!
"); return -1; } namedWindow("input image", WINDOW_AUTOSIZE); imshow("input image", src); int height = src.rows; int width = src.cols; int nc = src.channels(); dst = Mat::zeros(src.size(), src.type()); // dst src 、 float alpha = 1.2; float beta = 30.0; for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { // if (nc == 1) { float v = src.at(row, col); dst.at(row, col) = saturate_cast(v*alpha + beta); } // else if (nc == 3) { float b = src.at(row, col)[0]; float g = src.at(row, col)[1]; float r = src.at(row, col)[2]; dst.at(row, col)[0] = saturate_cast(b*alpha + beta); dst.at(row, col)[1] = saturate_cast(g*alpha + beta); dst.at(row, col)[2] = saturate_cast(r*alpha + beta); } } } imshow("contrast and brightness change", dst); waitKey(0); return 0; }

実行: