寻门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

相关文章
相关标签/搜索