版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/love_image_xie/article/details/87462175
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
#include<cmath>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
void on_Track(int pos, void* data)
{
Mat src = *(Mat*)data;
Mat dst;
threshold(src,dst,pos,255,0);
imshow("dyn_threshold",dst);
}
int main()
{
Mat src;
src = imread("E:\\研究生\\学习材料\\学习书籍\\OpenCV图像处理编程实例-源码-20160801\\《OpenCV图像处理编程实例-源码-20160801\\images\\flower4.jpg");
if (src.empty())
return -1;
Mat gray;
cvtColor(src,gray,CV_RGB2GRAY);
namedWindow("dyn_threshold");
imshow("dyn_threshold", gray);
createTrackbar("pos","dyn_threshold",0,255,on_Track,&gray);
imshow("src",src);
waitKey(0);
}
从这段代码我们可以知道以下几点:
1、createTrackbar函数定义,“pos”表示工具条的名字,“dyn_threshold”表示窗口名字,0-255表示工具条的最小值和最大值,on_Track表示移动工具条调用的函数,gray表示用户自己的数据;
2、将void*转化为Mat矩阵可用src = *(Mat*)data