基礎篇-Canny邊緣檢測html
Canny邊緣檢測方法常被譽爲邊緣檢測的最優方法,先看下面的示例:python
import cv2 import numpy as np # 1.Canny邊緣檢測 img = cv2.imread('images/handwriting.jpg', 0) edges = cv2.Canny(img, 30, 70) #參數二、3表示最低、高閾值 cv2.imshow('canny', np.hstack((img, edges))) cv2.waitKey(0)
Canny邊緣檢測原理算法
Canny邊緣檢測算法能夠分爲如下5個步驟:網絡
先閾值分割後檢測post
在不少狀況下,閾值分割後再檢測邊緣,效果會更好:url
# 2.先閾值,後邊緣檢測 # 閾值分割(使用到了Otsu自動閾值) _, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) #_表示不會用到這個值 edges = cv2.Canny(thresh, 30, 70) cv2.imshow('canny', np.hstack((img, thresh, edges))) cv2.waitKey(0)
進階篇-基於深度神經網絡的邊緣檢測spa
canny 算法的檢測效果,過分依賴於人工閾值的設定,沒法再通用場景下工做,如何找到一個在天然場景下能夠正確工做的邊緣檢測器呢?答案是使用CNN。htm