在使用3x3的Sobel算子是精度可能不高,Scharr速度与Sobel算子一样 ,但精度更高
函数形式
dst = cv2.Scharr( src , ddepth , dx , dy [ , scale [ ,delta [, borderType]]])
与Sobel相似少了Ksize参数, 即当Sobel中ksize = -1 时会使用Scharr算子计算。
import cv2
img = cv2.imread("images/img2_small.jpg", cv2.IMREAD_GRAYSCALE)
sx = cv2.Scharr(img, cv2.CV_64F, 1, 0)
sx = cv2.convertScaleAbs(sx)
sy = cv2.Scharr(img, cv2.CV_64F, 0, 1)
sy = cv2.convertScaleAbs(sy)
sxy = cv2.addWeighted(sx, 0.5, sy, 0.5, 0)
cv2.imshow("original", img)
cv2.imshow("xy", sxy)
cv2.waitKey()
cv2.destroyAllWindows()