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()的詳細函數解釋以下:ide