基于opencv创建滑动条

本文介绍关于创建滑动条的函数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讲武堂”关注,也可如下二维扫码关注。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值