Я экспериментирую с пользовательскими ядрами для извлечения границ в заданных изображениях.
Я использую фильтр np.array([[-2, -1, 0], [-1, 10, 1], [0, 1, 2]])
.
Для данного набора изображений, которые имеют аналогичную природу, код генерирует результаты, в которых иногда присутствуют штриховки, тогда как для других изображений они отсутствуют.
Я не могу понять, почему это происходит. Я читал о пользовательских фильтрах и о том, как они работают, но это не решает мою проблему.
Код выглядит следующим образом:
import cv2
import sys
import numpy as np
im_name = sys.argv[1]#give path to the image
im = cv2.imread(im_name, 0)
im_copy = im.copy()
#create custom filter
my_filter = np.array([[-2, -1, 0], [-1, 10, 1], [0, 1, 2]])
dst = cv2.filter2D(im, -1, my_filter)
cv2.imshow("test", im)
cv2.imshow("check", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
Изображение 1
и 2
показывают отклоняющийся результат, остальные изображения ожидаются
Результаты