Cómo extraer una región blanca en una imagen
Tengo una imagen de muestra como esta
Estoy buscando una manera de oscurecer el ruido de la imagen, de modo que termine con una imagen que solo tiene texto negro sobre fondo blanco para poder enviarla a tesseract.
He intentado transformarme con
kernel = np.ones((4,4),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)
Pero no parece funcionar.
También he tratado de 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)
Con el código anterior, obtengo los siguientes contornos:
que lleva a esta imagen cuando se recorta:
que todavía no es lo suficientemente bueno. Quiero texto negro sobre fondo blanco, para poder enviarlo a tesseract OCR y tener una buena tasa de éxito.
¿Hay algo más que pueda probar?
Actualizar
Aquí hay una imagen similar adicional. Este es un poco más fácil porque tiene un rectángulo liso