我正在尝试将我的灰度图像与各种过滤器进行卷积。我用过
cv2.Laplacian(gray, cv2.CV_64F)
和
kernel =np.array([[0, 1, 0] , [1, -4, 1] , [0, 1, 0]])
dst = cv2.filter2D(gray, -1, kernel)
但结果不同。
有人可以详细说明为什么我会得到不同的结果吗?
我正在尝试将我的灰度图像与各种过滤器进行卷积。我用过
cv2.Laplacian(gray, cv2.CV_64F)
和
kernel =np.array([[0, 1, 0] , [1, -4, 1] , [0, 1, 0]])
dst = cv2.filter2D(gray, -1, kernel)
但结果不同。
有人可以详细说明为什么我会得到不同的结果吗?
由于cv2.Laplacian
在这种情况下的实现正是与[[0, 1, 0], [1, -4, 1], [0, 1, 0]]
过滤器进行卷积,因此似乎可能的罪魁祸首是您要输入的数据类型cv2.Filter2D
。
通过使用此代码
kernel = np.array([[0, 1, 0] , [1, -4, 1] , [0, 1, 0]])
dst1 = cv2.filter2D(im, ddepth=cv2.CV_64F, kernel=kernel)
dst2 = cv2.Laplacian(im, cv2.CV_64F)
你应该得到
>>> np.all(dst1==dst2)
True