CV2.Laplacian vs cv2.filter2d - 不同的结果



我正在尝试用各种过滤器卷积我的灰度图像。我用过

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

最新更新