在C++使用OpenCV库创建一个带滚动条的窗口,用于动态调整图像的亮度

QuickDemo.cpp

#include<quick_opencv.h>

//创建一个带滚动条的窗口,用于动态调整图像的亮度
static void on_track(int position, void* userdata) //回调函数:当滚动条的位置改变时被自动调用的回调函数
//position:滚动条的当前位置; userdata:用户提供的数据的指针,在这个例子中,它被用来传递原始图像。
{
	Mat image = *((Mat*)userdata);//从userdata获取原始图像
	Mat dst = Mat::zeros(image.size(), image.type());//创建一个与原始图像同样大小和类型的零矩阵dst,用于存放调整亮度后的结果。
	Mat m = Mat::zeros(image.size(), image.type());//滑动条当前的值,这代表要增加的亮度值。
	m = Scalar(position, position, position);
	add(image, m, dst);
	imshow("亮度调整", dst);
}

void QuickDemo::tracking_bar_demo(Mat &image) //设置滚动条
{
	namedWindow("亮度调整", WINDOW_AUTOSIZE);
	
	int lightness = 50;//表示滚动条的初始位置
	int max_val = 100;//用户可以选择的亮度调整的最大范围
	
	createTrackbar("Value Bar:", "亮度调整", &lightness, max_val, on_track,(void*)(&image));//使用createTrackbar创建一个滚动条,命名为"Value Bar:",并关联on_track回调函数。当用户移动滚动条时,on_track会被调用,根据滚动条的位置调整图像的亮度。
	on_track(lightness, &image);//手动调用on_track函数以初始亮度值(50)显示图像,这确保了在滚动条创建时图像能够以初始亮度值被正确显示。
}

quick_opencv.h

#include<opencv2\opencv.hpp>
using namespace cv;
class QuickDemo{
    public:
		void tracking_bar_demo(Mat &image);//滚动轴

main.cpp

#include<opencv2/opencv.hpp>
#include<quick_opencv.h>
#include<iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	
	//读取并显示图像,如果imread返回的Mat对象(src)是空的,打印错误消息并退出程序。
	Mat src = imread("C:/Users/WangYinning/Desktop/opencv-0/win.png");//B G R 蓝绿红
	if (src.empty())
	{
		printf("could not find the image...\n");
		return -1;
	}
	namedWindow("原图", WINDOW_FREERATIO);//创建一个可以自由调整比例的窗口
	imshow("原图", src);

	//创建QuickDemo类的实例qd
	QuickDemo qd;
	//滚动轴
	qd.tracking_bar_demo(src);
	
	//等待用户输入并清理资源
	waitKey(0);
	destroyAllWindows();
	return 0;
}

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/394730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 创建 Hello World 工程

Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name&#xff1a;工程名…

办公记事常用工具:桌面记事本助你高效记事

在繁忙的办公环境中&#xff0c;我常常感到自己的大脑像是一个不停旋转的陀螺&#xff0c;各种待办事项、会议安排和灵感想法在脑海中交织&#xff0c;仿佛随时都要迸发出来。然而&#xff0c;只靠人脑记忆&#xff0c;不仅辛苦&#xff0c;而且容易出错。在这样的背景下&#…

Unity之闪电侠大战蓝毒兽

目录 &#x1f3a8;一、创建地形 &#x1f3ae;二、创建角色 &#x1f3c3;2.1 动画 &#x1f3c3;2.2 拖尾 &#x1f3c3;2.3 角色控制 ​&#x1f3c3;2.4 技能释放 &#x1f3c3;2.5 准星 &#x1f4f1;三、创建敌人 &#x1f432;3.1 选择模型 &#x1f432;3.…

基于Arduino UNO设计一个温控制系统

目录 概述 1 硬件结构 1.1 整体硬件介绍 1.2 硬件连接结构 2 软件设计 2.1 软件功能介绍 2.2 关于Arduino的一些知识点 2.2.1 定时器 2.2.2 PWM 2.3 代码实现 2.3.1 编译工具 2.3.2 详细代码 3 测试 3.1 温度数据监控 3.2 温控测试 概述 本文介绍如何使用Ardui…

深度学习(16)--基于经典网络架构resnet训练图像分类模型

一.项目介绍 使用PyTorch工具包调用经典网络架构resnet训练图像分类模型&#xff0c;用于分辨不同类型的花 二.项目流程详解 2.1.引入所需的工具包 import os import matplotlib.pyplot as plt # %matplotlib inline import numpy as np import torch from torch import nn …

三防平板丨平板终端丨加固平板丨户外勘测应用

随着科技的不断发展&#xff0c;现代勘测业也在不断升级。相较于传统的勘测设备&#xff0c;三防平板在户外勘测中有着广泛的应用。那么&#xff0c;三防平板在户外勘测中究竟有哪些优势呢&#xff1f; 首先&#xff0c;三防平板具备极强的防水、防尘、防摔能力。在野外勘测中&…

android studio模拟器不能打开

Andriod:The selected AVD is currently running in the Emulator. Please exit the emulator instance… 1.点击 2.删除下面文件 3.重新打开即可 参考

【XR806开发板试用】 UART串口通信篇

目录&#xff1a; 一. 环境配置 二. 串口通信 三. oled显示 总结&#xff1a;源码中有头文件及例子等。 一.环境配置 在https://aijishu.com/a/1060000000286755中已经写好。 二.UART串口通信 2.1 简单介绍 通用异步收发传输器&#xff08;Universal Asynchronous Receiv…

[Angular 基础] - 视图封装 局部引用 父子组件中内容传递

[Angular 基础] - 视图封装 & 局部引用 & 父子组件中内容传递 之前的笔记&#xff1a; [Angular 基础] - Angular 渲染过程 & 组件的创建 [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面&#xff0c;即不涉及到跨组…

APP出海类型有哪些?流量主如何选择广告变现平台?

APP出海成了目前的新趋势&#xff0c;对开发者而言&#xff0c;广告策略和流量分配的方法上也面临着诸多挑战。 一、APP出海类型 01、游戏类应用 游戏类应用是移动应用出海中最受欢迎的类型之一。这类应用通常具有较高的娱乐性和互动性&#xff0c;能够吸引大量用户下载和使…

Eclipse - Expressions Add Watch Expression

Eclipse - Expressions & Add Watch Expression References Window -> Show View -> Other… Show View -> Debug -> Expressions -> Open Debug 模式下出现 Expressions 窗口 Debug 模式下&#xff0c;如果需要查看指定变量或者返回函数的值&#xff0c;直…

区块链技术和Hyperledger Fabric介绍

1 区块链介绍 1.1 区块链技术形成 1.1.1 起源 在比特币诞生之时&#xff0c;技术专家们开始研究比特币的底层技术&#xff0c;并抽象提取出来&#xff0c;形成区块链技术&#xff0c;或者称分布式账本技术。 1.1.2 定义 简称BT&#xff08;Blockchain technology&#xff…

跨境电商无货源如何实现自动化对接1688货源商品上架?1688商品采集API来帮你

阿里巴巴集团旗下的B2B电子商务网站&#xff0c;提供海量优质商品&#xff0c;为采购商和供应商提供交流、合作、采购等服务&#xff0c;是很多没有货源优势的电商卖家首选的货源途径&#xff0c;也是国内最大、货源种类最齐全的货源网站。 不少做跨境电商无货源的朋友都想要直…

UE5 C++ UObject实例化

一.创建UObject C类 在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面&#xff0c;先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf 是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类&#xff0c;允许设计者指定伤害类型…

SSH密钥认证登陆流程(Vscode连接到远程)

目录 前言连接远程步骤1. 下载工具包wsCli到本地机器2. 本地机器上生成ssh密钥3. 在服务器上安装公钥4. vscode连接到远程 参考资料 前言 SSH&#xff08;Secure Shell&#xff09;是一种用于远程登录和安全传输数据的网络协议。它提供了两种主要的远程连接方式&#xff1a; 密…

迁移公众号必须公证吗?

公众号迁移的好处有哪些&#xff1f;迁移后原公众号还能用吗&#xff1f;公众号迁移的好处有很多哦&#xff01;比如可以获得更多权限功能、公司变更或注销时可以保证账号的正常使用、收购账号后可以改变归属权或使用权等等。不过要注意的是&#xff0c;迁移后原公众号就不能再…

用户权限管理系统需求分析(附文档下载)

整体目录 引言 1.1 项目简介 本文档对通用用户权限管理系统的总体设计、接口设计、界面总体设计、数据结构设计、系统出错处理设计以及系统安全数据进行了说明。 1.2 编写说明 1&#xff0e;3参考资料 《通用权限管理系统需求规格说明书》 《通用权限管理系统数据库设计说…

mysql 2-18

加密与解密函数 其他函数 聚合函数 三者效率 GROUP BY HAVING WHERE和HAVING的区别 子查询 单行子查询和多行子查询 单行比较操作符 多行比较操作符 把平均工资生成的结果当成一个新表 相关子查询 EXISTS 一条数据的存储过程 标识符命名规则 创建数据库 MYSQL的数据类型 创建表…

【RT-DETR有效改进】注意力与卷积的高效融合 | ACmix自注意力与卷积混合模型

一、本文介绍 本文给大家带来的改进机制是ACmix自注意力机制的改进版本&#xff0c;它的核心思想是&#xff0c;传统卷积操作和自注意力模块的大部分计算都可以通过1x1的卷积来实现。ACmix首先使用1x1卷积对输入特征图进行投影&#xff0c;生成一组中间特征&#xff0c;然后根…

DS:八大排序之归并排序、计数排序

创作不易&#xff0c;感谢三连支持&#xff01;&#xff01; 一、归并排序 1.1 思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子…