Преобразование градаций серого в двоичный файл, который автоматически определяет порог - opencv - python - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь обработать изображение капчи. Я хочу обработать другой тип изображения капчи для извлечения фактического текста. Я использую open cv для этой работы, она работает нормально, но проблема в том, что мне нужно установить другой нижний порогпреобразовать оттенки серого в двоичное изображение.

Основная цель: я пытаюсь удалить эту горизонтальную линию и сделать символ понятным для чтения

Используемый код:

import cv2

# Load an color image in grayscale
img = cv2.imread('it_captcha3.jpg',0)
ret, thresh_img = cv2.threshold(img, 180, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('grey image',thresh_img)
cv2.imwrite("result11.jpg", thresh_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Captcha1:

enter image description here

Обработанное изображение: использованный порог -> низкий: высокий 180 -> 255,

enter image description here

CAPTCHA: 2

enter image description here

ОБРАБОТАННОЕ ИЗОБРАЖЕНИЕ: используется порог -> низкий: 200 высокий -> 255

enter image description here

капча: 3

enter image description here

обработано: низкое -> 165 высокое: 255

enter image description here

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Посмотрите документацию opencv о https://docs.opencv.org/3.4.0/d7/d4d/tutorial_py_thresholding.html

Этот алгоритм подходит для вашего приложения

и я предлагаю вам изучить бинаризацию изображения.

+)

Вы также можете взглянуть на другие решения

Бинарный адаптивный порог OpenCV OCR

OpenCV Адаптивный пороговый OCR

0 голосов
/ 18 сентября 2018

Вы пробовали выравнивание гистограммы?

Вы можете сделать расхождение данных на нескольких изображениях более стабильным.

import cv2

# Load an color image in grayscale
img = cv2.imread('it_captcha3.jpg',0)
img = cv2.equalizeHist(img)
ret, thresh_img = cv2.threshold(img, 215, 255, cv2.THRESH_BINARY_INV)

cv2.imshow('grey image',thresh_img)
cv2.imwrite("result11.jpg", thresh_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

В моем испытании нижнее пороговое значение зафиксировано с 215.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...