Мне нужно убрать серый рисунок с фона изображения, и на нем нужны только символы, нарисованные поверх него.
Вот мой код для этого с использованием morphologyEx, но он не удаляет весь серый рисунок, который находится в фоновом режиме .
img_path = "images/new_drawing.png"
img = cv2.imread(img_path)
kernel = np.ones((2,2), dtype=np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=1)
cv2.imshow('Without background',result);
cv2.waitKey(0)
cv2.destroyAllWindows()
Я пробовал также и получил ожидаемые результаты в оттенках серого, но не смог преобразовать его в BGR.
Вот мой код
img = cv2.imread('images/new_drawing.png')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
med_blur = cv2.medianBlur(gray_img, ksize=3)
_, thresh = cv2.threshold(med_blur, 190, 255, cv2.THRESH_BINARY)
blending = cv2.addWeighted(gray_img, 0.5, thresh, 0.9, gamma=0)
cv2.imshow("blending", blending);
Также я использовал контуры, чтобы идентифицировать символы и нарисовать их на белом изображении, но проблема в том, что он также определяет фоновый рисунок, который мне не нужен.
Входное изображение
Ожидаемое изображение на выходе
Также рисунок всегда будет серого цвета, как на изображении.
Пожалуйста, помогите меня, чтобы получить лучший результат.