Удалить прерванные части изображения для OCR python - PullRequest
0 голосов
/ 14 марта 2020

Я новичок в обработке изображений и хочу сделать OCR для изображений с цифрами, однако некоторые из них трудно распознать, как этот: img

Я пробовал бинаризацию, но это недостаточно эффективно, так есть ли другой способ удалить круг и центральную звезду? Спасибо! код

вывод: Shee ar

ожидаемый вывод: 891972

1 Ответ

0 голосов
/ 14 марта 2020

Попробуйте использовать tesseract OCR engine от Google, это будет очень полезно при выполнении OCR.

Попробуйте этот метод для удаления фона

import cv2
import numpy as np
from matplotlib import pyplot as plt
image_bgr = cv2.imread('images/plane_256x256.jpg')
image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)
rectangle = (0, 56, 256, 150)
 Create initial mask
mask = np.zeros(image_rgb.shape[:2], np.uint8)

# Create temporary arrays used by grabCut
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)

# Run grabCut
cv2.grabCut(image_rgb, # Our image
            mask, # The Mask
            rectangle, # Our rectangle
        bgdModel, # Temporary array for background
        fgdModel, # Temporary array for background
        5, # Number of iterations
        cv2.GC_INIT_WITH_RECT) # Initiative using our rectangle

# Create mask where sure and likely backgrounds set to 0, otherwise 1
mask_2 = np.where((mask==2) | (mask==0), 0, 1).astype('uint8')


# Multiply image with new mask to subtract background
image_rgb_nobg = image_rgb * mask_2[:, :, np.newaxis]

plt.imshow(image_rgb_nobg), plt.axis("off")
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...