Sobel算子對噪聲具有平滑作用,提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。
import cv2 image = cv2.imread("wuhuan.jpg",1) cv2.imshow('yuan',image) image_x=cv2.Sobel(image,cv2.CV_64F,1,0,ksize=3) #X方向Sobel ''' 參數2 ddepth:必選參數。表示輸出圖像的深度,-1表示采用的是與原圖像相同的深度。目標圖像的深度必須大於等於原圖像的深度 參數3和參數4 dx和dy表示的是求導的階數,0表示這個方向上沒有求導,一般為0、1、2 參數6 ksize:可選參數。用於設置內核大小,即Sobel算子的矩陣大小,值必須是1、3、5、7,默認為3。 ''' absX=cv2.convertScaleAbs(image_x) # 轉回uint8 cv2.imshow("absX",absX) image_y=cv2.Sobel(image,cv2.CV_64F,0,1,ksize=3) #Y方向Sobel absY=cv2.convertScaleAbs(image_y) cv2.imshow('absY',absY) #進行權重融合 dst=cv2.addWeighted(absX,0.5,absY,0.5,0) cv2.imshow('dst',dst) #cv2.imshow("dst",dst) cv2.waitKey()