1. 程式人生 > >【轉】Python+opencv利用sobel進行邊緣檢測(細節講解)

【轉】Python+opencv利用sobel進行邊緣檢測(細節講解)

#! usr/bin/env python
# coding:utf-8

# 2018年7月2日06:48:35
# 2018年7月2日23:11:59

import cv2
import numpy as np
import matplotlib.pyplot as plt


img = cv2.imread('number.jpg',0)
# 其中,0表示將圖片以灰度讀出來。


#### 影象邊緣處理sobel細節
sobelx = cv2.Sobel(img,cv2.CV_64F, 1, 0, ksize=3)
# 利用Sobel方法可以進行sobel邊緣檢測
# img表示源影象,即進行邊緣檢測的影象
# cv2.CV_64F表示64位浮點數即64float。 # 這裡不使用numpy.float64,因為可能會發生溢位現象。用cv的資料則會自動 # 第三和第四個引數分別是對X和Y方向的導數(即dx,dy),這裡1表示對X求偏導,0表示不對Y求導。其中,X還可以求2次導。 # 注意:對X求導就是檢測X方向上是否有邊緣。 # 第五個引數ksize是指核的大小。 # 這裡說明一下,這個引數的前四個引數都沒有給誰賦值,而ksize則是被賦值的物件 # 實際上,這時可省略的引數,而前四個是不可省的引數。注意其中的不同點 # 還有其他引數,有需要的話可以去看,也可留言。 sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
# 與上面不同的是對y方向進行邊緣檢測 sobelXY = cv2.Sobel(img, cv2.CV_64F, 1, 1, ksize=3) # 這裡對兩個方向同時進行檢測,則會過濾掉僅僅只是x或者y方向上的邊緣 ##### 影象展示 # 展示上面處理的圖片,包括源影象。 # 注意使用subplot和title方法 plt.subplot(2,2,1) plt.imshow(img,'gray') # 其中gray表示將圖片用灰度的方式顯示,注意需要使用引號表示這是string型別。 # 可以用本行命令顯示'gray'的型別:print(type('gray')) plt.title('
src') plt.subplot(2,2,2) plt.imshow(sobelx,'gray') plt.title('sobelX') plt.subplot(2,2,3) plt.imshow(sobely,'gray') plt.title('sobelY') plt.subplot(2,2,4) plt.imshow(sobelXY,'gray') plt.title('sobelXY') plt.show() --------------------- 作者:月下花弄影 來源:CSDN 原文:https://blog.csdn.net/qq_27261889/article/details/80891491 版權宣告:本文為博主原創文章,轉載請附上博文連結!

結果展示

其中,可以看見不同演算法的效果