首页 > 其他分享 >06 滚动条操作1.0 - 调整图像亮度

06 滚动条操作1.0 - 调整图像亮度

时间:2023-01-12 14:11:29浏览次数:64  
标签:1.0 dst 亮度 滚动条 参数 06 lightness image

06 滚动条操作1.0 - 调整图像亮度

opencv知识点:

  • 创建滚动条 - createTrackbar()
  • 处理滚动条事件的函数 - TrackbarCallback()

本课所解决的问题:

  • 如何创建滚动条?
  • 如何通过滚动条进行亮度调整?

1.滚动条的创建

上一课中,我们调整亮度只能一次一次的去调整,现在我们来试一下通过滚动条调整亮度。

OpenCV中,我们要想在图像上通过滚动条调整亮度,要用到两个API

  • createTrackbar

  • TrackbarCallback(用户自写)

createTrackbar
	创建滚动条
		共6个参数
			第1个参数 滚动条名称
			第2个参数 窗口名称
			第3个参数 初始的位置
			第4个参数 最大位置(最小位置始终为0)
			第5个参数 处理轨迹栏事件类型的回调函数
					(opencv中这里默认是onChange = 0,实际应用中我们要自己进行函数定义及实现)
			第6个参数 userdata 传递给回调函数的用户数据(任何我们想传的,比如图像)

TrackbarCallback类型的函数
	共2个参数
		第1个参数 指定轨迹栏的当前位置
		第2个参数 void*类型的可选传入数据

2.通过滚动条调整亮度

这里的代码只是初步的实现,并没有充分利用creatTrackbar的6个参数
同时部分地方也不符合面向对象的编程,所以我们在下一课进行了代码优化

程序

quickopencv.h

//函数定义
void tracking_bar_demo(Mat& image);

quickdemo.cpp

#include "quickopencv.h"
#include <opencv2/dnn.hpp>

using namespace cv;
using namespace std;


//函数实现
Mat src, dst, m;
int lightness;

static void on_track(int, void*) {

	m = Scalar(lightness, lightness, lightness);
	add(src, m, dst);
	//subtract(src, m, dst);
	imshow("亮度调整", dst);

}

void QuickDemo::tracking_bar_demo(Mat& image) {

	src = image;
	dst = Mat::zeros(image.size(), image.type());
	m = Mat::zeros(image.size(), image.type());
	namedWindow("亮度调整", WINDOW_AUTOSIZE);

	int max_value = 100;
	lightness = 50;

	createTrackbar("Value Bar:", "亮度调整", &lightness, max_value, on_track);
	
	//on_track(lightness, 0);
    /*
	课程中的这一句代码,是多此一举,这是一个回调函数不需要我们手动调用
	这个lightness在createTrackbar中就已经传入了,这里没必要再去调用传入
	*/

}

提高亮度:

提高亮度
add(src, m, dst);

10b263968c851652c73cbc531ffa957

降低亮度:

降低亮度
subtract(src, m, dst);

1226d6d0bbe3970f3f77a83ff0d895f

本课所用API查阅

creatTrackbar()

TrackbarCallback()

标签:1.0,dst,亮度,滚动条,参数,06,lightness,image
From: https://www.cnblogs.com/L707/p/17046530.html

相关文章

  • 【2023-01-06】连岳摘抄
    23:59如果贫穷赶走了你的金色鞋子,切莫让它驱走你的笑声,那是我生命的面包。如果你付不起房租,就以骄傲的步伐去工作,且记住,亲爱的,我时时看着你,我们在一起是世上所能积累的最......
  • 06-DenseNet 图像分类
          DenseNet代码实现(pytorch):1importtorch2importtorch.nnasnn3importtorchvision45print("PyTorchVersion:",torch.__ver......
  • HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析
    HTTP错误400400请求出错由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。HTTP错误401401.1未授权:登录失败此错误表明传输给服务器......
  • Codeforces Edu Round 106 Div2
    解题A.DominoonWindowsill这个题给一个2xn的方格,一个行有k1个白块,第二行有k2个白块,那么现在有w个2x1的白块和b个2x1黑块,白对白,黑对黑,问能不能全放下这个就是判断下白......
  • 电子设计教程9:Boost升压电路(MC34063)
      Boost本身是一个单词,有“促进、增加”的含义。在电子设计中,Boost是一种升压电路。  一节电池是1.5V,两节电池串联起来,就有3V。Boost升压变换器的原理,就是把储能元件电......
  • 【HMS Core】运动健康服务发起授权失败 code=50063
    ​问题描述拉起授权页失败且返回code=50063 解决方案1、使用HealthKit的SDK需要用户手机上安装HMSCoreApk应用。2、返回50063错误码,需要检查当前设备中是否已安......
  • 【首页】隐藏滚动条和底部
    一、【首页】隐藏滚动条和底部1.1隐藏全局滚动条,需要在pages.json的"app-plus"下设置一个属性:"scrollIndicator":"none"1.2隐藏scroll-view滚动条需要在App.vue中添加......
  • Json-Tutorial06 对象解析
    前言MiloYip2016/11/15本文是《从零开始的JSON库教程》的第六个单元解答篇。解答代码位于json-tutorial/tutorial06_answer。1.重构lept_parse_string()这个......
  • MASA Stack 1.0 发布会正式官宣
    MASAStack1.0发布会正式官宣2023/1/1614:00线上直播与你不见不散视频号与b站同步开启直播 如果你对我们的MASAFramework感兴趣,无论是代码贡献、使用、提I......
  • DRF06-视图架构
    本文探究Django以及DRF的视图的层层递进,从源码学习视图的不断完善和丰富01最简单的视图FBVurlpatterns=[path('test01/',views.test01)]只要在浏览器上请求......