【OpenCV • c++】滑动条的创建和使用

news2024/12/25 12:21:18

  • 🚀 个人简介:CSDN「博客新星」TOP 10 , C/C++ 领域新星创作者
  • 💟 作    者:锡兰_CC ❣️
  • 📝 专    栏:【OpenCV • c++】计算机视觉
  • 🌈 若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力💪💪💪

文章目录

    • 什么是滑动条
    • 创建滑动条
      • 参考代码
    • 获取当前滑动条位置
      • 参考代码

什么是滑动条

  滑动条是 OpenCV 动态调节参数特别好用的工具,它依附于窗口而存在。

创建滑动条

  在 OpenCV 中,可以使用createTrackbar函数来创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上。

参考代码

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

  其中,trackbarname表示我们创建的滑动条的名字。winname表示这个滑动条吸附在的窗口的名字。value表示滑块的位置,在创建时,滑块的初始位置就是该变量的值。count表示滑块可以到达的最大值,最小值始终为 0。onChange表示指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。回调的类型为void xx(int, void*),其中第一个参数表示轨迹条的位置,第二个参数表示用户数据userdatauserdate表示传给回调函数的用户数据。

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/types_c.h>
#include<opencv2/imgproc.hpp> 
#include<iostream>
using namespace std;
using namespace cv;

Mat image, srcImage;
int thresholds = 50;

void threshold_track(int, void*) {
	Mat result;
	threshold(srcImage, result, thresholds, 255, THRESH_BINARY);
	//Canny(srcImage, result, thresholds, thresholds * 3, 3);
	imshow("边缘检测", result);
}

int main() {
	image = cv::imread("...cc.png");
	if (!image.data)
		return 1;
	cvtColor(image, srcImage, COLOR_BGR2GRAY);
	namedWindow("边缘检测", WINDOW_AUTOSIZE);
	createTrackbar("阈值", "边缘检测", &thresholds, 300, threshold_track);
	waitKey(0);
	return 0;
}

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

获取当前滑动条位置

  在 OpenCV 中,可以使用getTrackbarPos()函数来获取当前滑动条的位置。

参考代码

int getTrackbarPos(const string& trackbarname, const string& winname);

  其中第一个参数表示滑动条的名字,第二个参数表示轨迹条的父窗口的名称。

其他

更多专栏订阅:

  • 👍 【开卷数据结构】
  • 💛 【备战蓝桥,冲击省一】
  • 💕   从零开始的 c++ 之旅
  • 💖 【OpenCV • c++】计算机视觉

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

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

相关文章

【Linux网络服务】Nginx Rewrite重写模块

Nginx Rewrite 一、常用的Nginx 正则表达式二、location 匹配的范围2.1location实验 三、rewrite模块3.1rewrite跳转3.2rewrite执行顺3.3flag标记说明3.4rewrite中常用的全局变量3.5rewrite实验3.5.1 基于域名的跳转3.5.2基于客户端IP访问跳转3.5.3基于旧域名跳转到新域名后面加…

基于深度学习的高精度海洋生物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度海洋生物检测识别系统可用于日常生活中检测与定位海洋生物目标&#xff08;海胆&#xff1a;echinus&#xff0c;海参&#xff1a;holothurian&#xff0c;扇贝&#xff1a;scallop&#xff0c;海星&#xff1a;starfish&#xff09;&…

MySQL数据库 番外.聚合函数

前言&#xff1a; 聚合函数是分组查询中一个重要的组成部分&#xff0c;想要利用分组查询&#xff0c;就要对聚合函数有不错的掌握&#xff0c;因此我们在这里开一篇番外&#xff0c;讲解SQL语法中的聚合函数 聚合函数&#xff1a; 聚合函数是SQL中一种特殊的函数&#xff0c;…

Oracle中的数据导出(4)

目录 法一&#xff1a;使用SQL plus命令脚本 法二&#xff1a;使用PLSQL Developer工具 前几篇文章描述了如何将Oracle中的数据导出到库外&#xff0c;但是导出的数据结果都是文本文档&#xff0c;这样页面查看不和谐&#xff0c;编辑又略显麻烦。因此这篇文章将描述如何将Or…

60题学会动态规划系列:动态规划算法第二讲

都是路径问题~ 文章目录 1.不同路径2.不同路径II3.礼物的最大价值4.下降路径最小和5.最小路径和 1.不同路径 力扣链接&#xff1a;力扣 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一…

异常检测学习笔记 一、异常检测及基本统计

一、什么是异常? 1、异常的定义 异常是指与其他数据有很大不同的数据。异常现象是“一种与其他观测结果大相径庭的观测结果,以至于人们怀疑它是由不同的机制产生的。”,也被称为“异常”或“离经叛道”。 所有观测值 = 正常数据 + 异常值 异常值 = 噪声 + 异常 噪声 = 人们…

scratch接水果 少儿编程 电子学会图形化编程scratch编程等级考试二级真题和答案解析2023年5月

目录 scratch接水果 一、题目要求 1、准备工作 2、功能实现 二、案例分析

操作系统复习2.3.5-管程

引入管程 PV操作困难&#xff0c;容易书写出错&#xff0c;引入管程&#xff0c;作为一种高级同步机制 组成 局限于管程的共享数据结构说明对该数据结构进行操作的一组过程对局部于管程的共享数据结构设置初始值的语句管程有一个名字 基本特征 局限于管程的数据只能被局限…

括号匹配(使用链栈实现)

目录 0. 前言1. 括号匹配——题目描述2. 解题思路3. 括号匹配意义 0. 前言 数据结构——括号匹配(使用链栈实现) 操作系统&#xff1a;Windows10 家庭版 开发环境&#xff1a;Dev-Cpp 1. 括号匹配——题目描述 给定一个只包含括号的字符串s&#xff0c;判断这个字符串中的…

【图】单源最短路径

最短路径 图上的最短路径&#xff1a;两顶点之间经过的边数最少的路径&#xff1b; 网上的最短路径&#xff1a;两顶点之间经过的边上权值之和最少的路径&#xff08;源点->终点&#xff09;。 a星算法、迪杰斯特拉算法、佛洛依德算法。 迪杰斯特拉算法 单源最短路径按…

SpringBoot项目登录并接入MFA二次认证

MFA多因素认证(Multi-Factor Authentication )&#xff1a; 一些需要身份认证的服务&#xff08;如网站&#xff09;&#xff0c;为了提升安全性&#xff0c;通常会在账号密码登录成功后&#xff0c;要求用户进行第二种身份认证&#xff0c;以确保是正确用户登录&#xff0c;避…

【C语言】C预处理器(宏、文件包含、条件编译...)

一、C语言编译的预处理阶段1.1 C语言的编译过程1.2 C语言编译的预处理 二、C语言 宏2.1替换常量2.2函数宏2.3 字符串化和连接&#xff1a;#和##2.4 变参宏 三、文件包含&#xff1a;#include3.1 写法3.2 头文件的作用——声明3.3 头文件和extern 、static 四、 其他指令4.1 #un…

Ansible基础4——变量、机密、事实

文章目录 一、变量二、机密2.1 创建加密文件2.2 查看加密文件2.3 编辑加密文件内容2.4 加密现有文件2.5 解密文件2.6 更改加密密码 三、事实3.1 收集展示事实3.2 展示某个结果3.3 新旧事实命令3.4 关闭事实3.5 魔法变量 一、变量 常设置的变量&#xff1a; 要创建的用户要安装的…

【C++ 基础篇:19】:类的构造函数与初始化列表:用法说明及构造函数的细节内容补充!

本系列 C 相关文章 仅为笔者学习笔记记录&#xff0c;用自己的理解记录学习&#xff01;C 学习系列将分为三个阶段&#xff1a;基础篇、STL 篇、高阶数据结构与算法篇&#xff0c;相关重点内容如下&#xff1a; 基础篇&#xff1a;类与对象&#xff08;涉及C的三大特性等&#…

Kubernetes_容器网络_循序渐进地学习kubernetes网络

文章目录 前言一、Linux网络命名空间1.1 linux网络命名空间1.2 不同网络命名空间的通信两个网络命名空间通信多个网络命名空间通信 二、K8S Pod网络通信2.1 Pod内部容器的网络通信2.2 相同node: 不同pod间的网络通信2.3 不同node: 不同pod间的网络通信2.4 容器网络插件: Flanne…

C++STL库之map

文章目录 关于仿函数stackdeque&#xff08;双端对列&#xff09;queuepriority_queuemap(重点)set(去重) 关于仿函数 //C不能重载的运算符sizeof、 ::、 ? :、 .、 *、 class Add { public:int operator()(int a, int b)const{return a b;} }; //函数对象&#xff0c;仿函数…

EDA数字钟(三)

文章目录 前言一、设计内容二、模块结构三、代码编写1、顶层模块Digclk2、状态控制模块Ctrl3、按键消抖模块Filter4、计时模块Time5、闹钟模块Alarm6、显示模块Display7、数码管驱动模块Smg 四、测试文件五、波形仿真总结 前言 再次编写数字钟Verilog程序&#xff0c;使其符合…

数据迁移工具,用这8种就够了

前言 最近由于工作需要需要进行数据迁移&#xff0c;那么ETL数据迁移工具该用哪些呢&#xff1f; ETL(是Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程)&#xff0c;对于企业应用来说&#xff0c;我们经常会遇到各种数据的处理、转换、迁移的场景。…

50 Projects 50 Days - Split Landing Page 学习记录

项目地址 Split Landing Page 展示效果 Split Landing Page 实现思路 当鼠标移动到左右两块区域时&#xff0c;分别给容器添加不同的class实现样式的变换。 有两种思路可以实现&#xff0c;一种是hover时改变宽度&#xff0c;一种是hover时改变flex拉伸比例&#xff0c;两…

从零手写操作系统之RVOS外设中断实现-04

从零手写操作系统之RVOS外设中断实现-04 RISC-V 中断&#xff08;Interrupt&#xff09;的分类RISC-V Trap &#xff08;中断&#xff09;处理中涉及的寄存器寄存器 mie、mip中断处理流程PLIC 介绍外部中断&#xff08;external interrupt &#xff09;PLICPLIC Interrupt Sour…