(13)Air Band OpenCV2.4.13_改变图像对比度和亮度

本文介绍如何使用OpenCV库调整图像的亮度和对比度。通过用户输入的参数,程序能够实现对图像像素值的基本线性变换。该文演示了具体的C++代码实现过程,包括读取图像文件、创建新的图像、应用亮度和对比度调整并展示最终效果。

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

本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。

使用这样的处理:g(x)=af(x)+b

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
double alpha;//对比度
int beta;//亮度
int main( int argc, char** argv )
{
	Mat image = imread( argv[1] );//读取图像
	Mat new_image = Mat::zeros( image.size(), image.type() );//用0初始化大小、类型与原图像一致的一张图像

	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;//使用用户输入来初始化
	
	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.at<Vec3b>(y,x)[c],y是行,x是列,c是R(0)或G(1)或B(2)
			}
		}
	}//操作:new_image(i,j) = alpha*image(i,j) + beta


	namedWindow("Original Image", 1);
	namedWindow("New Image", 1);//创建窗口

	imshow("Original Image", image);
	imshow("New Image", new_image);//显示图像

	waitKey();//等待用户按键
	return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值