OpenCV c++滑动条的创建和使用代码

 更新时间:2023年06月16日 11:07:54   作者:锡兰_CC  
滚动条(Trackbar)在OpenCV中是非常方便的交互工具,它依附于特定的窗口而存在,下面这篇文章主要给大家介绍了关于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);

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

总结

到此这篇关于OpenCV c++滑动条的创建和使用代码的文章就介绍到这了,更多相关OpenCV c++滑动条创建使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 完美解决QT QGraphicsView提升到QChartView报错的问题

    完美解决QT QGraphicsView提升到QChartView报错的问题

    使用QT提供的QChartView来绘制图表,提升QGraphicsView控件继承QChartView后,然后将QGraphicsView提升到我们自己写的类,怎么才能确保提升后编译不报错呢,下面小编给大家带来了QT QGraphicsView 提升到QChartView报错解决方案,感兴趣的朋友一起看看吧
    2023-05-05
  • C++面经之什么是RAII面试问题解析

    C++面经之什么是RAII面试问题解析

    这篇文章主要介绍了C++面经之什么是RAII面试问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • c++ map索引不存在的key可能导致的后果分析

    c++ map索引不存在的key可能导致的后果分析

    这篇文章主要介绍了c++ map索引不存在的key可能导致的后果分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 基于Qt制作一个定时关机的小程序

    基于Qt制作一个定时关机的小程序

    这篇文章主要为大家详细介绍了如何基于Qt制作一个有趣的定时关机的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C++详细分析lambda表达式的本质

    C++详细分析lambda表达式的本质

    Lambda表达式是现代C++在C ++ 11和更高版本中的一个新的语法糖 ,在C++11、C++14、C++17和C++20中Lambda表达的内容还在不断更新。 lambda表达式(也称为lambda函数)是在调用或作为函数参数传递的位置处定义匿名函数对象的便捷方法
    2022-06-06
  • C语言实例讲解嵌套语句的用法

    C语言实例讲解嵌套语句的用法

    所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里 面还有 while,或者 for 里面有 while,while 里面有 if-else,这都是允许的
    2022-05-05
  • 使用matlab绘制七夕表白玫瑰花束

    使用matlab绘制七夕表白玫瑰花束

    又是一年七夕节要到了,每年一次直男审美MATLAB绘图大赛开始了,于是今年对我之前写的老代码进行了点优化组合,整了个花球变花束,感兴趣的小伙伴可以动手试一试
    2023-08-08
  • 利用C语言实现经典多级时间轮定时器

    利用C语言实现经典多级时间轮定时器

    C语言是一门通用计算机编程语言,广泛应用于底层开发,这篇文章主要给大家介绍了关于利用C语言实现经典多级时间轮定时器的相关资料,需要的朋友可以参考下
    2021-07-07
  • C语言编写学生成绩管理系统

    C语言编写学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言编写学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言中的字符串数据在C中的存储方式

    C语言中的字符串数据在C中的存储方式

    这篇文章主要介绍了C语言中的字符串数据在C中的存储方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论