Canny算法是进行边缘检测的一种实用的算法,具体实现方法如下。在本程序中设置了滑动条可以改变高低阈值。
#include <opencv2/opencv.hpp> #include <opencv/highgui.h> using namespace cv; using namespace std; //Canny边缘检测 //实现用滑动条改变高、低阈值 const int sliderHigh_max = 20;//设置高阈值的最大值 const int sliderLow_max = 10;//设置低阈值的最大值 int sliderHigh; int sliderLow; Mat pic, grayPic, edge; void trackbar(int, void*) { Canny(edge, edge, sliderLow, sliderHigh, 3); imshow("Canny边缘提取", edge); } int main() { pic = imread("..\\picture\\lena.jpg"); 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); }
Canny()的详细函数解释如下:
void Canny( InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )
寻门OpenCV-03-Canny边缘检测算法(带滑动条控制)
原文:https://www.cnblogs.com/findsnow/p/11838940.html