OpenCV 滑动条调整图像亮度

一、知识点
1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange = 0, void * userdata = 0);
  (1)、创建一个滑动条并将其附在指定窗口上。
  (2)、参数说明:
      trackbarname: 创建的滑动条显示名称。
      winname: 包含滑动条的窗口名称。
      value: 将由滑动条更改的整数值的指针。
      count: 滑动条的最大位置。
      onChange: 回调函数,每次滑块改变位置时会调用此函数。 函数原型void Foo(int, void *),第一个参数是滑动条位置,第二个参数是用户数据。 如果为nullptr,则不会调用回调函数,但是value仍然自动更新。
      userdata: 用户数据,传递给回调函数。


二、示例代码: 通过滑动条来调整图像亮度

#include <iostream>
#include <opencv2/opencv.hpp>void onTrackAdd(int value, void * pSrc)
{cv::Mat src = ((cv::Mat *)pSrc)->clone();cv::Mat temp = cv::Mat::zeros(src.size(), CV_8UC3);temp = cv::Scalar(value, value, value);cv::Mat dst;cv::add(src, temp, dst);cv::imshow("亮度增加", dst);
}void onTrackSub(int value, void * pSrc)
{cv::Mat src = ((cv::Mat *)pSrc)->clone();cv::Mat temp = cv::Mat::zeros(src.size(), CV_8UC3);temp = cv::Scalar(value, value, value);cv::Mat dst;cv::subtract(src, temp, dst);cv::imshow("亮度减少", dst);
}int main()
{cv::Mat src = cv::imread("../images/8.png");if (src.empty()){std::cout << "load src image error..." << std::endl;return -1;}cv::imshow("原始图像", src);int valueAdd = 50;cv::namedWindow("亮度增加", cv::WINDOW_AUTOSIZE);cv::createTrackbar("亮度+", "亮度增加", &valueAdd, 100, onTrackAdd, &src);int valueSub = 50;cv::namedWindow("亮度减少", cv::WINDOW_AUTOSIZE);cv::createTrackbar("亮度-", "亮度减少", &valueSub, 100, onTrackSub, &src);cv::waitKey(0);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vcs仿真产生fsdb波形的两种方式

目录 方法一&#xff1a; 使用verilog自带的系统函数 方法二&#xff1a; 使用UCLI command 2.1 需要了解什么是vcs的ucli&#xff0c;怎么使用ucli&#xff1f; 2.2 使用ucli dump波形的方法 使用vcs仿真产生fsdb波形有两种方式&#xff0c;本文参考《vcs user guide 20…

【前端】每日一道面试题6:解释Promise.any和Promise.allSettled的使用场景及区别。

Promise.any() 和 Promise.allSettled() 是 JavaScript 中用于处理异步操作的两种不同策略的 Promise 组合器&#xff0c;它们的核心区别在于逻辑目标与结果处理方式&#xff1a; 1. Promise.any() 使用场景&#xff1a; 需要获取 首个成功结果&#xff08;类似竞速成功优先&…

数据链路层__

文章目录 数据链路层基本概念&#xff08;1&#xff09;链路管理&#xff1a;面向连接的服务&#xff08;2&#xff09;帧同步&#xff1a;成帧1、字符计数法2、字符填充法&#xff08;带填充的首尾界符法&#xff09;3、带填充的首位标志法4、物理层编码违例法 &#xff08;3&…

coze智能体后端接入问题:

是否一定要按照coze官方API文档格式调用&#xff1f; 不一定&#xff1a;以下面代码为例(给了注释) app.route(/compare_models, methods[POST]) def compare_models():print("收到 compare_models 请求&#xff01;") #begin-这一部分代码作用&#xff1a;从前端接…

如何轻松、安全地管理密码(新手指南)

很多人会为所有账户使用相同、易记的密码&#xff0c;而且常常多年不换。虽然这样方便记忆&#xff0c;但安全性非常低。 您可能听说过一些大型网站的信息泄露事件&#xff0c;同样的风险也可能存在于您的WordPress网站中。如果有不法分子获取了访问权限&#xff0c;您的网站和…

宝塔think PHP8 安装使用FFmpeg 视频上传

宝塔think PHP8 安装使用FFmpeg 一、 安装think PHP8二、安装 FFmpeg1&#xff0c;登录到宝塔面板。2&#xff0c;进入“软件商店”。3&#xff0c;搜索“FFmpeg”。4&#xff0c;选择版本点击安装。5&#xff0c;检查 FFmpeg 是否安装成功6&#xff0c; 在 ThinkPHP 8 中使用 …

Android 轻松实现 增强版灵活的 滑动式表格视图

表格视图组件&#xff0c;支持&#xff1a; 1. 无标题模式&#xff1a;只有数据行也可以正常滑动 2. 两种滑动模式&#xff1a;固定第一列 或 全部滑动 3. 全面的样式自定义能力 4. 智能列宽计算 1. 无标题模式支持 设置无标题&#xff1a;调用 setHeaderData(null) 或 …

【Python进阶】元类编程

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…

DeepSeek模型性能优化:从推理加速到资源调度的全栈实践

引言 在生产环境中部署DeepSeek模型时,性能优化直接关系到服务质量和运营成本。本文将深入探讨从芯片级优化到分布式调度的全栈性能提升方案,涵盖计算图优化、内存管理、批处理策略等关键技术,并分享在千万级QPS场景下的实战经验,帮助工程团队突破性能瓶颈,实现成本与效能…

Ctrl+R 运行xxx.exe,发现有如下问题.

CtrlR 运行xxx.exe,发现有如下问题. (1)找不到Qt5Core.all,Qt5Cored.dll,Qt5Gui.dll,Qt5Guid.dll,Qt5Widgets.all,Qt5Widgetsd.dll? (2)之后找不到libwinpthread-1.dll 从这个目录拷贝相应的库到运行xx.exe目录下 方法二:将库路径添加到系统PATH环境变量里: 在Path中添加路…

硅基计划2.0 学习总结 陆 抽象类与接口

文章目录 一、抽象类1. 定义2. 示例代码3. 特性 二、接口初识1. 定义2. 命名与语法3. 示例代码4. 常见特性5. 多接口实现6. 接口的继承 三、Object类初识1. equals方法2. hascode方法 一、抽象类 1. 定义 请你假设这样一个场景&#xff0c;我们定义一个人的类&#xff0c;这个…

Linux命令基础(2)

su和exit命令 可以通过su命令切换到root账户 语法&#xff1a;su [-] 用户名 -符号是可选的&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上 参数&#xff1a;用户名&#xff0c;表示要切换的用户&#xff0c;用户名可以省略&#xff0c;省略表示切换到ro…

C++算法训练营 Day10 栈与队列(1)

1.用栈实现队列 LeetCode&#xff1a;232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x)将元素x推到队列的末尾 int pop(…

设计模式域——软件设计模式全集

摘要 软件设计模式是软件工程领域中经过验证的、可复用的解决方案&#xff0c;旨在解决常见的软件设计问题。它们是软件开发经验的总结&#xff0c;能够帮助开发人员在设计阶段快速找到合适的解决方案&#xff0c;提高代码的可维护性、可扩展性和可复用性。设计模式主要分为三…

【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)

目录 0.背景 1.详细实现 思路简介 .h文件 .cpp文件 0.背景 Qt Linux&#xff1b;项目遇到问题&#xff0c;解决后特此记录 项目需要&#xff0c;个性化的标题栏&#xff08;是个widget&#xff09;&#xff0c;在传统的三个按钮&#xff08;最大化、最小化、关闭&#xf…

如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)

背景 在实际项目开发中&#xff0c;依赖的三方库&#xff08;如 element-plus&#xff09;难免会遇到 bug。有时候官方虽然已经修复&#xff0c;但新版本升级成本高&#xff0c;或者有兼容性风险。这时&#xff0c;给依赖打补丁是最优雅的解决方案之一。 本文以 element-plus…

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…

优化电脑的磁盘和驱动器提高电脑性能和延长硬盘寿命?

磁盘优化 磁盘清理&#xff1a; 使用系统自带的磁盘清理工具&#xff08;如Windows的“磁盘清理”&#xff09;删除不必要的文件。清空回收站。删除临时文件和缓存。 磁盘碎片整理&#xff08;针对机械硬盘&#xff09;&#xff1a; 定期进行磁盘碎片整理&#xff0c;以提高文…

EDA断供危机下的冷思考:中国芯片设计软件的破局之道优雅草卓伊凡

EDA断供危机下的冷思考&#xff1a;中国芯片设计软件的破局之道优雅草卓伊凡 一、EDA是什么&#xff1f;芯片行业的”隐形基石” 1.1 EDA技术解析 EDA&#xff08;Electronic Design Automation&#xff0c;电子设计自动化&#xff09;是用于设计和验证集成电路的软件工具链…

Jpackage

简介 jpackage - 用于打包自包含 Java 应用程序的工具&#xff0c;是 JDK 14 引入的一个工具。 该工具将 Java 应用程序和 Java 运行时映像作为输入&#xff0c;并生成包含所有必要依赖项的 Java 应用程序映像。它将能够生成特定于平台的格式的本机包&#xff0c;例如包括打包 …