欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

十四、Canny边缘提取

发布时间:2023/12/1 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 十四、Canny边缘提取 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、算法步骤

1,对图像进行GaussianBlur(高斯模糊)消除一些噪声
2,对图像进行灰度转换cvtColor
3,计算梯度Sobel/Scharr
4,非最大信号抑制


5,高低阈值输出二值图像
设定两个阈值T1和T2,凡是高于T2的都保留,凡是低于T1的都舍弃。
从高于T2的像素出发,凡是大于T1并且相互连接的都保留。
最终得到一个输出二值图像。
推荐高低阈值比为T2:T1=3:1或者2:1,其中T2为高阈值,T1为低阈值。

二、Canny边缘检测算法

cv2.Canny(xgrad,ygrad,50,150)x方向梯度、y方向梯度、低阈值、高阈值

import cv2 import numpy as np from matplotlib import pyplot as pltdef edge(image):blurred = cv2.GaussianBlur(image,(3,3),0)gray = cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY)#x Gradientxgrad = cv2.Sobel(gray,cv2.CV_16SC1,1,0)#y Gradientygrad = cv2.Sobel(gray,cv2.CV_16SC1,0,1)#Cannyedge_output = cv2.Canny(xgrad,ygrad,50,150)#edge_output = cv2.Canny(gray,50,150)cv2.imshow("Canny Edge",edge_output)dst = cv2.bitwise_and(image,image,mask=edge_output)cv2.imshow("Color Edge",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg") cv2.imshow("image",src) cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE) edge(src)cv2.waitKey(0) cv2.destroyAllWindows()

效果图如下:

总结

以上是生活随笔为你收集整理的十四、Canny边缘提取的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。