OpenCV-Canny边缘检测算法

OpenCV-Canny边缘检测算法_第1张图片
非最大信号抑制:不是最大信号就舍弃;
OpenCV-Canny边缘检测算法_第2张图片
OpenCV-Canny边缘检测算法_第3张图片
L1表示

L2表示

在这里插入图片描述

API:
OpenCV-Canny边缘检测算法_第4张图片

#include
#include 
#include 

using namespace std;
using namespace cv;

Mat src, temp, gray_src, dst;
int t1_value = 50;
int max_value = 255;
const char* OUTPUT_TITLE = "OUTPUT";

void Canny_Demo(int, void*);
int main(int argc, char** argv)
{
	
	src = imread("E://VS-pro//images//zhu.jpg");
	if (!src.data)
	{
		cout << "can not find .." << endl;
		return -1;
	}
	imshow("原图", src);

	//高斯模糊 在计算灰度图像的X方向梯度图像以及Y方向梯度图像,求混和后振幅图像,更加清晰的边缘
	
	cvtColor(src, gray_src, COLOR_BGR2GRAY);
	imshow("灰度图像", gray_src);
	namedWindow(OUTPUT_TITLE);

	createTrackbar("Threshold value: ", OUTPUT_TITLE, &t1_value, max_value, Canny_Demo);
	
	Canny_Demo(0, 0);


	waitKey(0);
	return 0;
}

void Canny_Demo(int, void*)
{
	GaussianBlur(gray_src, gray_src, Size(3, 3), 0, 0);
	//blur(gray_src, gray_src, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);
	Canny(gray_src, dst, t1_value, t1_value * 2, 3, false);
	imshow(OUTPUT_TITLE, ~dst);
}

OpenCV-Canny边缘检测算法_第5张图片

你可能感兴趣的:(opencv)