OpenCV学习笔记九-Canny边缘检测

关于Canny边缘检测算法

Canny边缘检测算法主要是在其它边缘检测算子的基础上提出了改进,改进点在于提出了非极大值抑制和阈值检测。非极大值抑制消除了非边缘的但是梯度值较大的点,阈值检测使得不连续的边缘变得更加连续。

具体Canny算法的解析参考如下博文:

https://blog.csdn.net/likezhaobin/article/details/6892176

https://www.cnblogs.com/Imageshop/p/10664478.html

https://blog.csdn.net/u012198575/article/details/84846567

#include 
#include 

using namespace cv;
using namespace std;

int main() {
	//载入原始图并显示
	Mat srcImage = imread("1.jpg");
	if (!srcImage.data) { printf("Oh,no,读取srcImage错误~! \n"); return false; }
	imshow("原始图", srcImage);

	//----------对图像进行Canny边缘检测-----------//
	//创建存储矩阵
	Mat g_srcCanny,g_edgeCanny,g_srcGray;
	g_srcCanny.create(srcImage.size(), srcImage.type());
	
	//步骤一,将原图像转为灰度图
	cvtColor(srcImage, g_srcGray, COLOR_BGR2GRAY);

	//步骤二,去噪
	blur(g_srcGray, g_edgeCanny, Size(3, 3));

	//步骤三,运行Canny算子
	Canny(g_edgeCanny, g_srcCanny, 3, 9);
     
    //展示算法结果
	imshow("Canny边缘检测", g_srcCanny);

	waitKey(0);

	return 0;

}

你可能感兴趣的:(OpenCV3)