“`
include
include
using namespace cv;
using namespace std;
/———————————————————–窗口字符串常量全局声明————————————————-/
char input_name[] = “input image”;
char out_name1[] = “Canny_output_gray_image”;
char out_name2[] = “Canny_output_color_image”;
int tracknumble = 1;
/———————————————————–函数全局声明————————————————-/
void trackbar_demo(int, void*);
/———————————————————–变量量全局声明————————————————-/
Mat src, dst, src_gray, dst1;
/———————————————————–main函数————————————————-/
int main()
{
src = imread(“1.jpg”);//读取一张图片
if (!src.data)
{
cout << “Could not load the image!” << endl;
return 0;
}
namedWindow(input_name);
imshow(input_name, src);//显示原图像
namedWindow(out_name2);
/*-----------------------------------------------------------创建进度条-------------------------------------------------*/
createTrackbar("track_numble", out_name2,&tracknumble,255, trackbar_demo);//创建进度条时候一定注意前面要用namedWindow();
//否则无法显示进度条
/———————————————————–调用回调函数————————————————-/
trackbar_demo(0, 0);
waitKey(0);
return 0;
}
/———————————————————–回调函数————————————————-/
void trackbar_demo(int, void*)
{
GaussianBlur(src,src,Size(3,3),0,0);//首先进行高斯模糊
cvtColor(src, src_gray, CV_BGR2GRAY);//其次进行灰度转换
Canny(src_gray,dst, tracknumble, tracknumble*3,3);//再进行边缘检测
imshow(out_name1, dst);//灰度边缘显示
dst1=Mat::zeros(src.size(),src.type());
src.copyTo(dst1,dst);//将彩色边缘复制到空白Mat类变量中
imshow(out_name2, dst1);//彩色边缘显示
}
“