滑动条函数createTrackbar
函数原型
CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,
int* value, int count,
TrackbarCallback onChange = 0,
void* userdata = 0);
第一个参数是调节的参数名;
第二个参数是窗口名;即上步创建窗口名”边缘检测”,不要乱写,否则不出现滑动条;
第三个参数是int *,即参数名取地址,如“&thresholds”;
第四个参数是调节参数最大值,可以直接数字表示;
第五个参数是回调函数名,即调节的参数被那个函数使用,就调哪个函数。 如:cv::createTrackbar(“阈值:”,”边缘检测”,&thresholds,100,canny_track);
使用实例
createTrackbar函数在使用前必须调用namedWindow()函数创建窗口,窗口的名称与createTrackbar()第二个参数名称一致,否则无效
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int thresholds=50;
Mat image,srcimage;
//滑动条的回调函数
void canny_track(int ,void *)
{
Mat result;
Canny(srcimage,result,thresholds,thresholds*3,3);
imshow("边缘检测",result);
}
int main()
{
image=imread("D://test.jpg");
if(!image.data)
{
return 0;
}
cvtColor(image,srcimage,CV_BGR2GRAY);
namedWindow("边缘检测",WINDOW_AUTOSIZE);
cv::createTrackbar("阈值:","边缘检测",&thresholds,100,canny_track);
canny_track(0,0);
waitKey(0);
return 0;
}