十四、Canny边缘提取
生活随笔
收集整理的這篇文章主要介紹了
十四、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边缘提取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江湖悠悠堆肥箱在哪
- 下一篇: 大众suv多少钱啊?