Ich möchte Text auf dem Objekt lesen. Aber OCR-Programm kann es nicht erkennen. Wenn ich den kleinen Teil gebe, kann er erkennen. Ich muss den Kreistext in linearen Text umwandeln. Wie kann ich das machen? Vielen Dank.Wie kann ich ein Kreispfad-Textbild für das OCR-Programm vorbereiten?
1
A
Antwort
2
können Sie das Bild von kartesischen Koordinatensystem zu Polarkoordinatensystem transformieren, um Kreisbahn Text für OCR-Programm vorzubereiten. Diese Funktion logPolar()
kann helfen.
Hier sind einige Schritte Kreisbahn Textbild vorzubereiten:
- die Zentren
HoughCircles()
mit Kreisen finden. - Holen Sie sich das Mittel und tun Sie etwas Offset, also erhalten Sie die Mitte.
- (Optimal) Beschneide ein Quadrat des Bildes von der Mitte.
- Do
logPolar()
, dann drehen Sie es bei Bedarf.
Nach Kreisen erfassen und die Mittel der Zentren und es versetzt bekommen.
Das croped Bild:
Nach logPolar()
und rotate()
Mein Python3-OpenCV3.3
Code hier präsentiert wird, vielleicht hilft es.
#!/usr/bin/python3
# 2017.10.10 12:44:37 CST
# 2017.10.10 14:08:57 CST
import cv2
import numpy as np
##(1) Read and resize the original image(too big)
img = cv2.imread("circle.png")
img = cv2.resize(img, (W//4, H//4))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
## (2) Detect circles
circles = cv2.HoughCircles(gray, method=cv2.HOUGH_GRADIENT, dp=1, minDist=3, circles=None, param1=200, param2=100, minRadius = 200, maxRadius=0)
## make canvas
canvas = img.copy()
## (3) Get the mean of centers and do offset
circles = np.int0(np.array(circles))
x,y,r = 0,0,0
for ptx,pty, radius in circles[0]:
cv2.circle(canvas, (ptx,pty), radius, (0,255,0), 1, 16)
x += ptx
y += pty
r += radius
cnt = len(circles[0])
x = x//cnt
y = y//cnt
r = r//cnt
x+=5
y-=7
## (4) Draw the labels in red
for r in range(100, r, 20):
cv2.circle(canvas, (x,y), r, (0, 0, 255), 3, cv2.LINE_AA)
cv2.circle(canvas, (x,y), 3, (0,0,255), -1)
## (5) Crop the image
dr = r + 20
croped = img[y-dr:y+dr+1, x-dr:x+dr+1].copy()
## (6) logPolar and rotate
polar = cv2.logPolar(croped, (dr,dr),80, cv2.WARP_FILL_OUTLIERS)
rotated = cv2.rotate(polar, cv2.ROTATE_90_COUNTERCLOCKWISE)
## (7) Display the result
cv2.imshow("Canvas", canvas)
cv2.imshow("croped", croped)
cv2.imshow("polar", polar)
cv2.imshow("rotated", rotated)
cv2.waitKey();cv2.destroyAllWindows()
Verwandte Themen
- 1. Wie kann ich meine Rails-App für die Produktion vorbereiten?
- 2. JPG-Bilddaten für das Lernen vorbereiten?
- 3. Vorbereiten der Debugger-Unterstützung für das iPhone
- 4. Datensatz für ein konvolutionelles neuronales Netzwerk vorbereiten
- 5. vorbereiten (für: Absender :) nicht
- 6. Diskretisierungsdaten für Arules vorbereiten
- 7. Vorbereiten der Bilddaten für tflearn
- 8. Vorbereiten von Daten für das LDA-Training mit PySpark 1.6
- 9. vorbereiten Daten für CNTK LSTM
- 10. Wie kann ich ein Bild aus der Datenbank mit mysqli vorbereiten?
- 11. vorbereiten Array für mysql einfügen
- 12. Vorbereiten von Daten für Anomalieerkennung
- 13. Wie kann man ein neues Projekt auf ein bestehendes Projekt vorbereiten?
- 14. In-Store-App für MDM-Bereitstellung vorbereiten
- 15. Postgres: kann ich mich vorbereiten unbenannte Anweisung von SQL
- 16. Facebook Informationen für Facebook-Freunde vorbereiten
- 17. vorbereiten Daten für zwei ANOVA in R
- 18. Vorbereiten einer Windows XP-Entwicklungsumgebung für SharePoint
- 19. Wie kann ich für das Webpack arbeiten?
- 20. Sticker Bundle App - wie man es für die Einreichung vorbereiten
- 21. elegante Lösung für mehrere vorbereiten Aussagen
- 22. swift 3 vorbereiten (für segue:) funktion kaputt?
- 23. Wie Transaktionsdaten in den Warenkorb für Arules vorbereiten
- 24. Vorbereiten für Segue in Swift mit Absender
- 25. Json-Objekt für HttpClient vorbereiten Post-Methode
- 26. Struts2 vorbereiten Methode
- 27. MySQLi mehrere vorbereiten Aussagen
- 28. Wie kann ich Lineal für ein `RadRichTextBox`
- 29. Vorbereiten von Daten für (Stanford) Deepdive (ValueError)
- 30. PDO mit Unterabfragen vorbereiten
Vielleicht könnten Sie das Bild drehen und ein wenig nach dem anderen lesen? – theGleep