尋門OpenCV-03-Canny邊緣檢測算法(帶滑動條控制)

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

相關文章
相關標籤/搜索