Wie extrahiere ich einen weißen Bereich in einem Bild?

Ich habe ein Beispielbild wie dieses

Ich suche nach einer Möglichkeit, das Bildrauschen so zu verdunkeln, dass ich ein Bild erhalte, das nur schwarzen Text auf weißem Hintergrund enthält, damit ich es an tesseract senden kann.

Ich habe versucht, mit @ Morphi

kernel = np.ones((4,4),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)

aber es scheint nicht zu funktionieren.

Ich habe auch versucht, Konturen zu finden

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)

Mit dem obigen Code erhalte ich die folgenden Konturen:

was beim Zuschneiden zu diesem Bild führt:

was noch nicht gut genug ist. Ich möchte schwarzen Text auf weißem Hintergrund, damit ich ihn an tesseract OCR senden kann und eine gute Erfolgsquote habe.

ann ich sonst noch etwas versuche

Aktualisiere

Hier ist ein weiteres ähnliches Bild. Dies ist etwas einfacher, da es ein glattes Rechteck enthält.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage