Como extrair a região branca de uma imagem
Eu tenho uma imagem de amostra como esta
Estou procurando uma maneira de ocultar o ruído da imagem, de modo que acabe com uma imagem que tenha apenas texto em preto sobre fundo branco, para que eu possa enviá-la para tesseract.
Eu tentei me transformar em
kernel = np.ones((4,4),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)
mas não parece funcionar.
Eu também tentei encontrar contornos
img = cv2.cvtColor(rotated, cv2.COLOR_BGR2GRAY)
(cnts, _) = cv2.findContours(img, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:1]
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
roi=rotated[y:y+h,x:x+w].copy()
cv2.imwrite("roi.png", roi)
Com o código acima, recebo os seguintes contornos:
o que leva a esta imagem quando cortada:
o que ainda não é bom o suficiente. Desejo texto em preto sobre fundo branco, para que eu possa enviá-lo ao tesseract OCR e ter uma boa taxa de sucesso.
Há mais alguma coisa que eu possa tentar?
Atualizar
Aqui está uma imagem similar adicional. Este é um pouco mais fácil porque tem um retângulo suave