opencv-改变图像的对比度和亮度

本文介绍了一种使用C++和OpenCV实现图像亮度和对比度调整的方法。通过用户输入的alpha(对比度)和beta(亮度)参数,文章展示了如何通过两种不同的方式更新图像像素值:一种是手动迭代每个像素,另一种则是利用OpenCV提供的convertTo函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;


double alpha; /**< Simple contrast control*/
int beta; /**< Simple brightness control*/
int main( int argc, char**argv )
{
	/// Read image given by user
	Mat image = imread( "D:\\lena.bmp" );
	Mat new_image = Mat::zeros( image.size(), image.type() );
	/// Initialize values std::cout可以用cout表示,因为引入了C++的命名空间using namespace std;
	std::cout<<" Basic Linear Transforms "<<std::endl;
	std::cout<<"-------------------------"<<std::endl;
	std::cout<<"*Enter the alpha value [1.0-3.0]: ";std::cin>>alpha;
	std::cout<<"*Enter the beta value [0-100]: "; std::cin>>beta;
	
	/// Do the operation new_image(i,j) = alpha*image(i,j) + beta
	//方法一
	//for( int y = 0; y < image.rows; y++ )
	//{ 
	//	for( int x = 0; x < image.cols; x++ )
	//	{ 
	//		for( int c = 0; c < 3; c++ )
	//		{new_image.at<Vec3b>(y,x)[c] =saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );}
	//	}
	//}
	//方法二
	image.convertTo(new_image,-1,alpha,beta);

	/// Create Windows
	namedWindow("Original Image", 1);
	namedWindow("New Image", 1);
	/// Show stuff
	imshow("Original Image", image);
	imshow("New Image", new_image);
	/// Wait until user press some key
	waitKey();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Digital2Slave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值