本文介绍关于创建滑动条的函数createTrackbar,我们以图像的二值化为例嵌入滑动条,滑动条作用:通过改变滑动条的位置来改变函数里面变量的值。下面我们介绍滑动条函数的各个参数功能:
createTrackbar(const string& trackbarname, const string&winname, int* value, int count,TrackbarCallback onChange = 0, void* userdata = 0);
1 trackbarname:滑动条中滑动轨迹的名字
2 winname:窗口的名字
3 value:滑块的初始位置
4 count:滑块达到最大位置的值
5 onChange:用来接收回调函数函数名的,默认值为0
6 userdata:用户传给回调函数的数据,用来处理轨迹条事件,默认值为0
下面展示实现代码:
#include<opencv2/opencv.hpp>
#include<iostream>
usingnamespace cv;
usingnamespace std;
//TrackBar发生改变的回调函数
void onChangeTrackBar(intpos, void* userdata);
//主函数
void main()
{
//trackbar的值
int posTrackBar = 0;
//trackbar的最大值
int maxValue = 255;
Mat imgGray;
Mat image = imread("D:\\项目论文\\我的\\一些自制\\创建滑动条\\lena.jpg");
if (image.channels()>1)
cvtColor(image, imgGray, CV_BGR2GRAY);//二值化前先进行灰度转换
else imgGray = image;
namedWindow("二值化",WINDOW_AUTOSIZE);
imshow("二值化", imgGray);
//创建trackbar,我们把img作为数据传进回调函数中
createTrackbar("阈值", "二值化", &posTrackBar, maxValue, onChangeTrackBar, &imgGray);
waitKey();
}
// 回调函数
void onChangeTrackBar(intthreshold_val, void* usrdata)
{
// 强制类型转换
Mat src = *(Mat*)(usrdata);
Mat dst;
// 二值化
threshold(src, dst, threshold_val, 255, 0);
imshow("二值化", dst);
}
显示结果:
滑动条位置:0
滑动条位置:51
滑动条位置:120
到此滑动条函数介绍告一段落,迎大家留言讨论,如有兴趣一起学习图像处理、计算机视觉、深度学习相关领域欢迎关注号,一起学习进步
可以微信搜索“图像处理CV讲武堂”关注,也可如下二维扫码关注。