Я пытаюсь создать магический цветной фильтр для отсканированного документа, но не получаю желаемый результат. В некоторых документах текст искажается в некоторых документах, цвета изображений теряются. В некоторых документах текст становится слишком толстым. Я использую лапласиан Гауссиана для улучшения контуров, затем с помощью порога и, наконец, размытия изображения, чтобы получить естественный вид.
import cv2
import numpy as np
img = cv2.imread('example_output/sample16.jpeg')
original = img.copy()
kernel_sharpen_3 = np.array([[-1, -1, -1, -1, -1],
[-1, 2, 2, 2, -1],
[-1, 2, 8, 2, -1],
[-1, 2, 2, 2, -1],
[-1, -1, -1, -1, -1]]) / 8
img = cv2.filter2D(img, -1, kernel_sharpen_3)
ret, threshold = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY)
blur = cv2.GaussianBlur(threshold, (5, 5), 0)
stack_horizontal = np.concatenate((original, img), axis=1)
stack_horizontal2 = np.concatenate((threshold, blur), axis=1)
stack_vertical = np.concatenate((stack_horizontal, stack_horizontal2), axis=0)
cv2.imshow('Images', cv2.resize(stack_vertical, (700, 1000)))
cv2.imwrite("magic.jpg", threshold)
cv2.waitKey()
cv2.destroyAllWindows()
Исходное изображение:
Мой результат:
Вывод с задержкой: