一、sobel函式
二、對垂直/水平方向邊緣檢測
三、對垂直和水平方向邊緣檢測
# 利用sobel方法可以進行sobel邊緣檢測 #
sobelx = cv2.sobel(img,cv2.cv_64f, 1, 0, ksize=3)
img表示源影象,即進行邊緣檢測的影象
cv2.cv_64f表示64位浮點數即64float。這裡不使用numpy.float64,因為可能會發生溢位現象
第三和第四個引數分別是對x和y方向的導數(即dx,dy),這裡1表示對x求偏導,0表示不對y求導。其中,x還可以求2次導。
注意:對x求導就是檢測垂直方向的邊緣,對y求導是檢測水平方向的邊緣
第五個引數ksize是指核的大小。
這裡說明一下,這個引數的前四個引數都沒有給誰賦值,而ksize則是被賦值的物件。實際上,這時可省略的引數,而前四個是不可省的引數。注意其中的不同點
import cv2
# step1 讀入灰度圖
# step2 高斯模糊處理
blur_car = cv2.gaussianblur(initial_car,(5,5),0)
#step3 sobel計算水平導數
sobel_car = cv2.sobel(blur_car,cv2.cv_16s,1,0)
sobel_car = cv2.convertscaleabs(sobel_car) #轉回uint8
cv2.imshow('now',sobel_car)
cv2.waitkey(0)
上述**對x求導,即檢測了垂直方向的邊緣
使用cv2.sobel(img,cv2.cv_16s,0,1)可以實現對y求一階導,即對水平方向進行檢測我們不是使用
cv2.sobel(blur_car,cv2.cv_16s,1,1)
而是通過,先對水平方向邊緣檢測,在對垂直方向邊緣檢測,最後利用加權相加的方式實現對垂直和水平方向進行邊緣檢測
import cv2
# step1 讀入灰度圖
# step2 高斯模糊處理
blur_car = cv2.gaussianblur(initial_car,(5,5),0)
#step3 sobel計算水平導數
sobel_car1 = cv2.sobel(blur_car,cv2.cv_16s,1,0)
sobel_car2 = cv2.sobel(blur_car,cv2.cv_16s,0,1)
sobel_car1 = cv2.convertscaleabs(sobel_car1) #轉回uint8
opencv之邊緣檢測
canny檢測 發展 canny 的目標是找到乙個最優的邊緣檢測演算法,最優邊緣檢測的含義是 好的檢測 演算法能夠盡可能多地標識出影象中的實際邊緣。好的定位 標識出的邊緣要盡可能與實際影象中的實際邊緣盡可能接近。最小響應 影象中的邊緣只能標識一次,並且可能存在的影象雜訊不應標識為邊緣。為了滿足這些要...
Opencv 邊緣檢測
2018 7 5 凌晨 萬萬要認真,今晚抄書都能抄錯,是在該打。書上的一行 graysrc cv2.cvtcolor blurredsrc,cv2.color bgr2gray 硬生生被我抄成了 graysrc cv2.cvtcolor blurredsrc,cv2.color bayer bgr2...
opencv 邊緣檢測
include stdafx.h include using namespace cv using namespace std int edgethresh 1 宣告 原始,灰度,和 canny邊緣 mat image,cedge mat gray,edge void ontrackbar int,...