cv2.Laplacian vs cv2.filter2d - разные результаты - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь свернуть свое изображение в оттенках серого с помощью различных фильтров. Я использовал

cv2.Laplacian(gray, cv2.CV_64F)

и

kernel =np.array([[0, 1, 0] , [1, -4, 1] , [0, 1, 0]])
dst = cv2.filter2D(gray, -1, kernel)

, но результаты разные.

Может кто-нибудь объяснить, почему я получаю разные результаты?

1 Ответ

1 голос
/ 17 июня 2020

Поскольку то, что делает реализация 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
...