OpenCV 提供了函数 cv2.Scharr()来计算 Scharr 算子,其语法格式如下:
dst = cv2.Scharr( src, ddepth, dx, dy[, scale[, delta[, borderType]]] )
式中:
- dst 代表输出图像。
- src 代表原始图像。
- ddepth 代表输出图像深度。该值与函数 cv2.Sobel()中的参数 ddepth 的含义相同
- dx 代表 x 方向上的导数阶数。
- dy 代表 y 方向上的导数阶数。
- scale 代表计算导数值时的缩放因子,该项是可选项,默认值是 1,表示没有缩放。
- delta 代表加到目标图像上的亮度值,该项是可选项,默认值为 0。
- borderType 代表边界样式。
在函数 cv2.Sobel()中介绍过,如果 ksize=-1,则会使用 Scharr 滤波器。 因此,如下语句:
dst=cv2.Scharr(src, ddepth, dx, dy)
和dst=cv2.Sobel(src, ddepth, dx, dy, -1)
是等价的。函数cv2.Scharr()
和函数cv2.Sobel()
的使用方式基本一致。
首先,需要注意的是,参数 ddepth 的值应该设置为“cv2.CV_64F”,并对函数 cv2.Scharr() 的计算结果取绝对值,才能保证得到正确的处理结果。具体语句为: