当前位置: 首页 > article >正文

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.lryc.cn/news/2398236.html

相关文章:

  • 图解gpt之注意力机制原理与应用
  • 硬件学习笔记--65 MCU的RAM及FLash简介
  • 【Oracle】视图
  • 数据库 MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比
  • 基于粒子滤波的PSK信号解调实现
  • 更强劲,更高效:智源研究院开源轻量级超长视频理解模型Video-XL-2
  • 2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
  • 【连接器专题】案例:产品测试顺序表解读与应用
  • 星动纪元的机器人大模型 VPP,泛化能力效果如何?与 VLA 技术的区别是什么?
  • 4000万日订单背后,饿了么再掀即时零售的“效率革命”
  • 入门AJAX——XMLHttpRequest(Get)
  • 5分钟申请edu邮箱【方案本周有效】
  • 闲谈PMIC和SBC
  • Java垃圾回收机制深度解析:从理论到实践的全方位指南
  • Ubuntu系统 | 本地部署ollama+deepseek
  • 论文阅读:CLIP:Learning Transferable Visual Models From Natural Language Supervision
  • 在图像分析算法部署中应对流行趋势的变化|文献速递-深度学习医疗AI最新文献
  • CAMEL-AI开源自动化任务执行助手OWL一键整合包下载
  • Selenium 中 JavaScript 点击的优势及使用场景
  • Linux系统-基本指令(5)
  • C++ set数据插入、set数据查找、set数据删除、set数据统计、set排序规则、代码练习1、2
  • [android]MT6835 Android 指令启动MT6631 wifi操作说明
  • C# winform教程(二)
  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • 【仿生机器人】刀剑神域计划——仿生机器人.亚丝娜
  • ARM架构推理Stable Diffusiond
  • 仓颉项目调试配置与多文件场景下的问题解析
  • Easyui悬停组件
  • MySQL 8.0 OCP 英文题库解析(十)
  • Python Pytest