参考链接:https://www.cnblogs.com/findsnow/p/11838940.html
记录一下,蛮好用的
#include <opencv2/opencv.hpp>
#include <opencv/highgui.h>
using namespace cv;
using namespace std;
//Canny边缘检测
//实现用滑动条改变高、低阈值
const int sliderHigh_max = 300;//设置高阈值的最大值
const int sliderLow_max = 100;//设置低阈值的最大值
int sliderHigh;
int sliderLow;
Mat pic, grayPic, edge;
//注意回调的参数为int,void*
void trackbar(int, void*)
{
Mat result;
Canny(edge, result, sliderLow, sliderHigh, 3);
imshow("Canny边缘提取", result);
}
int main()
{
pic = imread("imgRoI.png");
imshow("原始图像", pic);
cvtColor(pic, grayPic, COLOR_BGR2GRAY);//将原始图像转化为灰度图
blur(grayPic, edge, Size(3, 3));//使用blur进行滤波
sliderHigh = 0;
sliderLow = 0;
namedWindow("Canny边缘提取", 1);
createTrackbar("CannyLow", "Canny边缘提取", &sliderLow, sliderLow_max, trackbar);//设置低阈值
createTrackbar("CannyHigh", "Canny边缘提取", &sliderHigh, sliderHigh_max, trackbar);//设置高阈值
trackbar(sliderLow, 0);
trackbar(sliderHigh, 0);
waitKey(0);
}