当前位置:
首页 >
十四、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边缘提取的全部内容,希望文章能够帮你解决所遇到的问题。