主要内容
- morphologyEx操作使用MORPH_GRADIENT参数,即dilate(img)-erode(img)
- Sobel/Scharr分别对xy计算梯度求绝对值,再相加
- Laplacian算子,二阶导数,已经不是梯度了,也可以用于边缘检测
- Sobel算子同时对xy求梯度的问题
- Sobel算子ddepth选择CV_64F坐标转换和求和的先后问题
Sobel算子的一些问题
先从几个奇怪的现象说起,见代码
import cv2
import numpy as np
img = np.full((200,200), 255, dtype=np.uint8)
img[60:140,60:140] = 0
img[80:120,80:120] = 255
# ddepth使用浮点数,因为uint8处理不了梯度负数等情况,这个不再讨论,主要这里dx,dy都是1,是错误的!!!
sobel = cv2.Sobel(img, cv2.CV_64F, 1, 1)
# 转换成uint8,求绝对值
sobel0 = cv2.convertScaleAbs(sobel)
sobelx = cv2.Sobel(img, cv2.