07 OpenCV滚动条操作2.0 - 调整亮度与对比度

07 滚动条操作2.0 - 调整亮度与对比度

opencv知识点:

  • 创建滚动条 - createTrackbar()
  • 处理滚动条事件的函数 - TrackbarCallback()
  • 亮度与对比度的概念
  • 巧用图片融合 - addWeighted()

本课所解决的问题:

  • 如何利用createTrackbaruserdata
  • 调整亮度/对比度的内涵是什么?
  • 如何利用图片融合addWeighted调整亮度/对比度?

1.参数userdata

对上一次课代码的改进,利用上userdata这个参数

合理运用第6个参数userdata,进行参数传递,从而调整亮度,以降低亮度为例。

程序

quickdemo.cpp

static void on_track(int light, void* userdata) {
   

	Mat image = *((Mat*)(userdata));

	Mat dst = Mat::zeros(image.size(), image.type());
	Mat m = Mat::zeros(image.size(), image.type());

	m = Scalar(light, light, light);

	//add(image, m, dst);
	subtract(image, m, dst);
	imshow("亮度调整", dst);

}

void QuickDemo::tracking_bar_demo(Mat& image) {
   

	namedWindow("亮度调整", WINDOW_AUTOSIZE);

	int lightness = 50;
	int max_light = 100;
	
	createTrackbar("Value Bar:", "亮度调整", &lightness, max_light, on_track,(void*)(&image));

	//on_track(lightness, &image);
	/*
	课程中的这一句代码,是多此一举,这是一个回调函数不需要我们手动调用
	这个lightness在createTrackbar中就已经传入了,这里没必要再去调用传入
	同时,我们使用了第6个参数,那么图像也已经传入,这里没必要再去调用传入
	*/

}

2197940dd53444294b0432f7b0443a9

2.亮度与对比度

亮度

调整亮度,就是整体的像素点值的调整,相当于整体同时加上一个数(可正可负)。

对比度

调整对比度,就是调整像素点之间的差值,相当于乘上一个数,如0.5,1.3。
像素点的值在变化的同时,像素点之间的差值也在变化。

3.调整亮度与对比度

调整亮度,对比度,我们也可以通过addWeighted实现

addWeighted
	共7个参数
		第1个参数 第一个输入 src1
		第2个参数 第一个输入的权重 alpha
		第3个参数 第二个输入 src2
		第4个参数 第二个输入的权重 beta
		第5个参数 每个数要增加的标量 gamma
		第6个参数 输出 dst
		第7个参数 输出的可选深度(一般用不到)

			公式
		dst = src1 * alpha + src2 * beta + gamma 
		范围截断在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值