Wie Fahrzeug Lizenz / Nummernschild (ANPR) aus einem Bild zu erkennen? [geschlossen]
-
13-09-2019 - |
Frage
Ich habe eine Website, die Benutzer Bilder von Autos hochladen kann, und ich mag einen Privacy-Filter an seinem Platz setzen Kennzeichen am Fahrzeug zu erkennen und verschwimmen sie.
Das Verschwimmen kein Problem ist, aber gibt es eine Bibliothek oder Komponente (Open Source bevorzugt), die mit der Suche nach einer Lizenz in einem Foto helfen?
Caveats;
- Ich weiß nichts perfekt ist und Bilderkennung dieser Art wird falsch positive und negative liefern.
- Ich schätze, dass wir die Benutzer fragen, könnten den Bereich auszuwählen, zu verwischen, und wir werden dies auch tun, aber die Frage ist, speziell über diese Daten programmatisch zu finden; so Antworten wie ‚bekommt eine Person jedes Bild zu überprüfen,‘ ist nicht hilfreich.
- Diese Software-Methode ‚Automatic Number Plate Recognition‘ in Großbritannien genannt, aber ich kann keine Implementierungen davon als Bibliotheken nicht sehen.
- Jede Sprache ist groß, obwohl .Net bevorzugt.
Lösung
I codiert eine C # Version basierend auf JAVA ANPR, aber ich änderte die AWT-Bibliotheksfunktionen mit OpenCV. Sie können es unter http://anprmx.codeplex.com
Andere Tipps
Bearbeiten . Ich schrieb ein Python-Skript für diese
Als Ihr Ziel (für den Schutz der Privatsphäre) verschwimmt, müssen Sie im Grunde ein hoch Detektor als erster Schritt wieder zu verwenden. Hier ist, wie über das tun dies zu gehen. Die mitgelieferten Codehinweise verwenden OpenCV mit Python.
- In Graustufen konvertieren.
-
Anwenden Gaussian Blur.
img = cv2.imread('input.jpg',1) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)
Lassen Sie das Eingangsbild folgendes sein.
- Anwenden Sobel-Filter auf vertikale Kanten zu erkennen.
-
Threshold das resultierende Bild strenge Schwelle oder OTSU des Digitalisierungs verwenden.
cv2.Sobel(image, -1, 1, 0) cv2.threshold()
-
Tragen Sie eine Morphologische Schließen durch geeignetes Strukturierungselement verwendet wird. (I verwenden 16x4 als strukturierendes Element)
se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4)) cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)
resultierendes Bild nach Schritt 5.
-
Finden Außenkonturen dieses Bildes.
cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
-
Für jede Kontur, findet die
minAreaRect()
es begrenzen. - Wählen Sie Rechtecke basierend auf Seitenverhältnis, Minimal- und Maximalbereich und Winkel mit der Horizontalen. (I verwenden 2.2 <= Seitenverhältnis <= 8, 500 <= Bereich <= 15000 und Winkel <= 45 Grad)
Alle minAreaRect()
s sind in orange und derjenige dargestellt, die in grün ist unsere Kriterien erfüllt.
- Es kann zu Fehlalarmen kommen nach diesem Schritt, sei es zu filtern, Kantendichte verwenden. Kantendichte wird als Anzahl der weißen Pixel / Gesamtzahl der Pixel in einem Rechteck definiert. Stellen Sie einen Schwellenwert für die Kantendichte. (I verwendet 0,5)
- die erfassten Regionen Blur.
können Sie andere Filter anwenden Sie für geeignet gehaltenen Rückruf und Präzision zu erhöhen. Der Nachweis kann auch Präzision mit HOG + SVM trainiert werden, erhöhen.
Es gibt eine neue Open-Source-Bibliothek auf GitHub, die ANPR tut für die USA und europäische Platten. Es sieht ziemlich genau, und es sollte genau das tun, was Sie brauchen (die Plattenbereiche erkennen). Hier ist das GitHub Projekt: https://github.com/openalpr/openalpr
Ich kam in diese, die javaANPR , ich auch für ac # Bibliothek suchen.
würde ich ein solches System, wo ich eine Videokamera an einigen Segelbooten zeigen kann, von denen alle große, erkennbare Zahlen auf sie haben, und haben sie die Boote identifizieren und einen Tweet senden, wenn sie an einer Videokamera segeln.
Ich habe vor einigen googeln darüber ein paar Monate getan. Es gibt durchaus ein paar Papiere zu diesem Thema, aber ich habe nie eine konkrete Open-Source-Implementierung gefunden. Es gibt obwohl, aber keiner von ihnen mit einem Preisangebot, so sind sie wahrscheinlich ziemlich teuer.
Versuchen Sie dieses einfache automatische Kennzeichenerkennungssystem
Open Source und geschrieben mit C #
Hier finden Sie aktuelle Java ANPR . Freie Kfz-Kennzeichenerkennung ...
Ja ich gocr unter http://jocr.sourceforge.net/ seine eine Kommandozeilen-Anwendung, die Sie könnte aus Ihrer Anwendung ausführen. Ich benutze es in ein paar meiner Anwendungen.
Hochleistungs ANPR-Bibliothek - http://www.dtksoft.com/dtkanpr.php. Dies ist kommerziell, aber sie bieten Testschlüssel.
http://licenseplate.sourceforge.net Python (ich habe es nicht getestet)
Es funktioniert vielleicht bei Character recoqnition Software suchen, da es viele Bibliotheken gibt, die die gleiche Sache durchführen. Ich ein Bild zu lesen und zu speichern es. Micrsoft Büro ist in der Lage TIFF-Dateien und das Rück alphanumerics lesen
Das Verschwimmen kein Problem ist, aber gibt es eine Bibliothek oder Komponente (Open Source bevorzugt), die mit der Suche nach einer Lizenz in einem Foto helfen?
Antwort: Die CARMEN Free Flow ANPR Software-Engine (Commerical)