OpenCV高级图形用户界面(1)创建滑动条函数createTrackbar()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

创建一个滑动条并将其附加到指定的窗口。

该函数 createTrackbar 创建一个具有指定名称和范围的滑动条(滑块或范围控制),将变量 value 分配为与滑动条位置同步的位置,并指定回调函数 onChange 在滑动条位置改变时被调用。创建的滑动条将显示在指定的窗口 winname 中。

cv::createTrackbar() 函数用于在 OpenCV 的窗口中创建一个滑动条(trackbar),可以用来调整一些参数,并实时反映在图像处理的效果中。

注释
[仅 Qt 后端] 如果滑动条应附加到控制面板,则 winname 可以为空。

点击每个滑动条的标签可以手动编辑滑动条的值。

函数原型

int cv::createTrackbar
(const String & 	trackbarname,const String & 	winname,int * 	value,int 	count,TrackbarCallback 	onChange = 0,void * 	userdata = 0 
)	

参数

  • 参数trackbarname 创建的滑动条的名称。
  • 参数winname 将作为创建的滑动条父级的窗口的名称。
  • 参数value 指向一个整型变量的可选指针,该变量的值反映了滑块的位置。在创建时,滑块的位置由这个变量定义。
  • 参数count 滑块的最大位置。最小位置始终为 0。
  • 参数onChange 指向每次滑块位置改变时将被调用的函数的指针。此函数应该原型化为 void Foo(int, void*);,其中第一个参数是滑块的位置,第二个参数是用户数据(参见下一个参数)。如果回调是指向 NULL 的指针,则不调用回调,但只会更新 value
  • 参数userdata 作为参数原样传递给回调的用户数据。它可以用来在不使用全局变量的情况下处理滑块事件。

返回值

返回一个整数值,表示操作的结果或状态。具体含义取决于 OpenCV 实现。

代码示例:


#include <iostream>
#include <opencv2/opencv.hpp>// 回调函数
void onTrackbarSlide( int pos, void* userData )
{cv::Mat img = *( cv::Mat* )userData;cv::Mat thresholdImg;cv::threshold( img, thresholdImg, pos, 255, cv::THRESH_BINARY );cv::imshow( "Threshold Image", thresholdImg );
}int main()
{// 加载图像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_GRAYSCALE );if ( img.empty() ){std::cerr << "Error: Image not found!" << std::endl;return -1;}// 创建窗口cv::namedWindow( "Threshold Image" );// 创建滑动条int thresholdValue = 128;int result         = cv::createTrackbar( "Threshold Value", "Threshold Image", &thresholdValue, 255, onTrackbarSlide, &img );if ( result < 0 ){std::cerr << "Failed to create trackbar." << std::endl;return -1;}// 初始显示cv::Mat thresholdImg;cv::threshold( img, thresholdImg, thresholdValue, 255, cv::THRESH_BINARY );cv::imshow( "Threshold Image", thresholdImg );// 主循环while ( true ){int key = cv::waitKey( 1 );if ( key == 27 ){  // ESC 键break;}}// 释放资源cv::destroyAllWindows();return 0;
}

运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

0基础做微信扫码点餐小程序,开发一款餐饮点餐软件收银系统

扫码点餐小程序收银系统是一种现代化的餐饮管理工具&#xff0c;它结合了移动互联网技术和餐饮业务需求&#xff0c;为餐厅提供了高效、便捷的点餐、收银和管理服务。以下是对该系统的详细介绍和功能解析&#xff1a; 一、系统介绍 扫码点餐小程序收银系统通常由系统后台、手…

JS设计模式之职责链模式:优雅地处理请求流程

一. 前言 在前端开发中&#xff0c;我们经常会遇到需要按照一定的顺序处理一系列请求或操作的情况&#xff0c;如果将每一步处理都硬编码在一起&#xff0c;会导致代码臃肿&#xff0c;可维护性和可扩展性都会大大降低。而职责链模式恰好提供了一种优雅的解决方案。 无论你是…

大模型面试八股+答案,LLM-offer手到擒来!

你是否也曾为面试大模型八股文而苦恼&#xff1f;别担心&#xff01;今天我就来给你分享一些绝妙的面试技巧&#xff0c;让你轻松应对&#xff01; &#x1f50d; 第一关&#xff1a;了解题目 首先&#xff0c;一定要仔细阅读题目&#xff0c;理解清楚每个要求。明确问题的关键…

字母数字图像分割系统源码&数据集分享

字母数字图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-Faster-EMA&#xff06;yolov8-seg-C2f-DiverseBranchBlock等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目…

硬件-PCB-叠层设计(四层板六层板)

文章目录 一&#xff1a;简介二&#xff1a;多层电路板结构三 PCB叠层设计的内容3.1 叠层设计的基本原则3.2 叠层设计的准备工作 四 六层PCB叠层方案介绍4.1 介绍常见的六层叠层结构并分析其优缺点 五 方案选择5.1 方案一&#xff1a;S-G-S-S-P-S5.2 方案二&#xff1a;S-S-G-P…

夹耳式耳机值得购买吗?这一篇文章扫清耳夹式耳机盲点!

近年来&#xff0c;夹耳式耳机备受很多人喜爱。主要原因在于这种耳机不入耳&#xff0c;既能保护我们的听力健康&#xff0c;又能让我们享受到极致的音乐体验。久而久之&#xff0c;人们反而对入耳式耳机戴着感到不习惯了。然而&#xff0c;一些想要入手夹耳式耳机的小伙伴却犯…

老板员工必看:钉钉聊天记录可以被监控吗?答案你万万想不到!

如今&#xff0c;无论是办公室还是居家远程工作&#xff0c;钉钉已经成为了许多公司不可或缺的沟通工具。 老板们依靠它安排工作、传递任务&#xff0c;员工们用它互相协作、讨论项目。可是&#xff0c;你有没有想过&#xff0c;钉钉聊天记录可以被监控吗&#xff1f; 答案可…

BP实战minist数据集

目录 前言 一、MNIST数据集介绍和加载 1.MNIST数据集介绍 2.加载数据集MNIST数据集 二、构建 BP 网络模型 1.神经网络结构图示 2.BP 网络模型代码解释 三、定义和训练BP 网络模型 四、训练结果 总结 前言 在当今人工智能与机器学习飞速发展的时代&#xff0c;神经网络…

SPI主从通讯稳定性之解决方法

在使用SPI通讯时&#xff0c;将硬件SPI用作主机的比较多&#xff0c;程序设计也比较容易&#xff0c;但是&#xff0c;若将硬件SPI用作从机了&#xff0c;网上的案例就比较少了&#xff0c;因为大家都有一个习惯&#xff0c;实在实现不了&#xff0c;就用软件模拟SPI来完成通讯…

函数式接口在Java中的应用与实践

1. 引言 函数式接口是Java 8引入的一个概念&#xff0c;它是指只有一个抽象方法的接口。函数式接口可以被用作lambda表达式的目标类型。在函数式接口中&#xff0c;除了抽象方法外&#xff0c;还可以有默认方法和静态方法。 函数式接口的引入是为了支持函数式编程&#xff0c…

Java项目: 基于SpringBoot+mybatis+maven+vue网上摄影工作室(含源码+数据库+任务书+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmavenvue网上摄影工作室 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、…

【算法】博弈论(C/C++)

个人主页&#xff1a;摆烂小白敲代码 创作领域&#xff1a;算法、C/C 持续更新算法领域的文章&#xff0c;让博主在您的算法之路上祝您一臂之力 欢迎各位大佬莅临我的博客&#xff0c;您的关注、点赞、收藏、评论是我持续创作最大的动力 目录 博弈论&#xff1a; 1. Grundy数…

【MySQL】-- 表的操作

文章目录 1. 查看所有表1.1 语法 2. 创建表2.1 语法2.2 示例2.3 表在磁盘上对应的文件 3. 查看表结构3.1 语法3.2 示例 4. 查看创建表的语句5. 修改表5.1 语法5.2 示例5.2.1 向表中添加一列5.2.2 修改某列的长度5.2.3 重命名某列5.2.4 删除某个字段5.2.5 修改表名 6. 删除表6.1…

不入耳开放式耳机哪个品牌好?开放式耳机排行榜10强推荐!

不入耳开放式耳机哪个品牌好&#xff1f;开放式耳机排行榜10强推荐&#xff01; 随着开放式耳机的日益流行&#xff0c;市场上的选择愈发多样&#xff0c;这有时会让消费者在挑选时感到迷茫&#xff0c;不知道哪个牌子的开放式耳机最好。为解决这一困扰&#xff0c;我精心筛选…

社区圈子系统 圈子社区系统 兴趣社区圈子论坛系统 圈子系统源码圈子系统的适用领域有哪些?如何打造自己的圈子圈子系统有哪些常见问题

社区圈子系统 圈子社区系统 兴趣社区圈子论坛系统 圈子系统源码圈子系统的适用领域有哪些&#xff1f;如何打造自己的圈子圈子系统有哪些常见问题 圈子系统的适用领域 圈子系统的适用领域广泛&#xff0c;涵盖了多个行业和场景&#xff0c;包括但不限于以下几个方面&#xff1…

Label Studio 半自动化标注

引言 Label Studio ML 后端是一个 SDK,用于包装您的机器学习代码并将其转换为 Web 服务器。Web 服务器可以连接到正在运行的 Label Studio 实例,以自动执行标记任务。我们提供了一个示例模型库,您可以在自己的工作流程中使用这些模型,也可以根据需要进行扩展和自定义。 1…

springboot邮件群发功能的开发与优化策略?

springboot邮件配置指南&#xff1f;如何实现spring邮件功能&#xff1f; SpringBoot框架因其简洁、高效的特点&#xff0c;成为了开发邮件群发功能的理想选择。AokSend将深入探讨SpringBoot邮件群发功能的开发过程&#xff0c;并提出一系列优化策略&#xff0c;以确保邮件发送…

常见的图像处理算法:均值滤波----mean filter

一、什么是均值滤波 均值滤波器是一种常见的图像滤波器&#xff0c;是典型的线性滤波算法。其基本原理是用一个给定的窗口覆盖图像中的每一个像素点&#xff0c;将窗口内的像素值求平均值&#xff0c;然后用这个平均值代替原来的像素值。均值滤波器可以去除噪声、平滑图像、减少…

代码随想录算法训练营Day28 | 39. 组合总和、40.组合总和Ⅱ、131.分割回文串

目录 39. 组合总和 40.组合总和Ⅱ 131.分割回文串 39. 组合总和 题目 39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不…

路径规划关于地图的整理

路径规划离不开地图&#xff0c;其中真实地图&#xff0c;栅格地图和RVIZ之间Grid显示之间很混乱&#xff0c;还有各个原点位置显示&#xff0c;不弄清发现map在rviz里显示老是偏的&#xff0c;专门学习记录一下。 RVIZ里Grid的全局坐标系原点&#xff0c;在默认在栅格中间&am…