opencv---增加图片亮度和对比度

1、原理:g(i,j) = af(i,j) + b;  a > 0;b是增益变量.

2、

#include "stdafx.h"
#include 
using namespace cv;


int _tmain(int argc, _TCHAR* argv[])
{
	Mat src = imread("lenna.bmp",IMREAD_UNCHANGED);
	if (!src.data)
	{
		printf("Load Image Failed.\n");
		return -1;
	}

	namedWindow("src image",CV_WINDOW_AUTOSIZE);
	imshow("src image",src);

	Mat dst = Mat::zeros(src.size(),src.type());
	int nWidth = src.cols;
	int nHeight = src.rows;
	float alpha = 1;
	float beta = 70;

	for (int row = 0;row < nHeight;row++)
	{
		for (int col = 0;col < nWidth;col++)
		{
			if (src.channels() == 1)
			{
				float val = src.at(row,col);
				dst.at(row,col) = saturate_cast(val * alpha + beta);
			} 
			else if(src.channels() == 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);
			}
		}
	}

	namedWindow("dst image",CV_WINDOW_AUTOSIZE);
	imshow("dst image",dst);

	waitKey(0);
	return 0;
}

 

你可能感兴趣的:(图像处理)