Извлечь подчеркнутые тексты с фото (Open CV)
Всем привет.
Мне срочно нужно вывести все подчеркнутые тексты с изображения такого типа.
Или обработать с помощью OpenCV чтобы на фото остались только подчеркнутые тексты
Обьем текста на фото динамичный, это просто пример.
Я попробовал этот код Extract text with strikethrough from image
import cv2
img = cv2.imread('juFpe.png', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV )[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,5))
kernel2=cv2.getStructuringElement(cv2.MORPH_RECT,(8,8))
detect_thin = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
detect_thin = cv2.morphologyEx(detect_thin, cv2.MORPH_DILATE, kernel2)
marker=cv2.compare(detect_thin, thresh,cv2.CMP_LT) # thin lines
while True: #morphological reconstruction
tmp=marker.copy()
marker=cv2.dilate(marker, kernel2)
marker=cv2.min(thresh, marker)
difference = cv2.subtract(marker, tmp)
if cv2.countNonZero(difference) == 0:
break
cv2.imwrite('lines.png', marker)
Но он не работает в моем примере
Вы можете подогнать этот код под мой пример или же написать свои
Так как он мне нужен очень срочно, а у меня не было опыта работа с OpenCV
Ответы (1 шт):
Автор решения: Alex Alex
→ Ссылка
В том примере по ссылке выделяются зачеркнутые, а не подчеркнутые слова. Для данной картинки подойдет такой код.
import cv2
img = cv2.imread('b3YmU.png', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY_INV )[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(17,1))
kernel2=cv2.getStructuringElement(cv2.MORPH_RECT,(8,8))
detect_thin = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
detect_thin = cv2.morphologyEx(detect_thin, cv2.MORPH_DILATE, kernel2)
marker=cv2.bitwise_and(detect_thin, thresh)
while True: #morphological reconstruction
tmp=marker.copy()
marker=cv2.dilate(marker, kernel2)
marker=cv2.min(thresh, marker)
difference = cv2.subtract(marker, tmp)
if cv2.countNonZero(difference) == 0:
break
marker=cv2.bitwise_not(marker)
result=cv2.max( marker, img)
cv2.imwrite('lines5.png',result)

