Domanda

Ho un sito web che consente agli utenti di caricare immagini di auto e vorrei mettere un filtro privacy sul posto per rilevare le targhe del veicolo e sfocatura loro.

La sfocatura non è un problema, ma c'è una biblioteca o di un componente (open source preferito) che vi aiuterà a trovare una licenza all'interno di una foto?

Avvertimenti;

  1. Io non so nulla è perfetto e riconoscimento di immagini di questo tipo fornirà falsi positivi e negativi.
  2. Mi rendo conto che avremmo potuto chiedere all'utente di selezionare l'area a sfumare e lo faremo anche questo, ma la questione è specificamente di trovare che i dati di programmazione; così risposte come 'avere una persona per controllare ogni immagine' non è utile.
  3. Questo metodo software si chiama 'Automatic Number Plate Recognition' nel Regno Unito, ma non riesco a vedere alcun implementazioni di esso come librerie.
  4. Ogni lingua è ottimo anche se Net è preferito.
È stato utile?

Soluzione

ho codificato una versione C # basato su JAVA ANPR, ma ho cambiato le funzioni di libreria AWT con OpenCV. È possibile controllare a http://anprmx.codeplex.com

Altri suggerimenti

Modifica :. Ho scritto una sceneggiatura Python per questo

Mentre il vostro obiettivo è la sfocatura (per tutela della privacy), è fondamentalmente bisogno di un alto href="https://en.wikipedia.org/wiki/Precision_and_recall"> come un primo passo. Ecco come fare per fare questo. I suggerimenti sul codice incluso l'uso OpenCV con Python.

  1. Converti in scala di grigi.
  2. Applicare Controllo sfocatura.

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

Lasciate che l'immagine in ingresso essere la seguente.

enter image description qui

  1. Applica filtro Sobel per rilevare bordi verticali.
  2. Soglia l'immagine risultante utilizzando soglia oggettiva o binarizzazione di Otsu.

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. Applicare un'operazione di chiusura morfologica utilizzando adatto elemento strutturante. (Io ho usato 16x4 come elemento strutturante)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

immagine risultante dopo il punto 5.

enter image description qui

  1. Trova contorni esterni di questa immagine.

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. Per ogni profilo, trovare il minAreaRect() delimitazione di esso.

  3. Seleziona rettangoli in base alle proporzioni, superficie minima e massima, e l'angolo con l'orizzontale. (Io ho usato 2,2 <= Proporzioni <= 8, 500 <= Area <= 15000, e l'angolo <= 45 gradi)

Tutti i minAreaRect()s sono mostrati in arancione e quella che soddisfa i nostri criteri è in verde.

enter image description qui

  1. Ci possono essere falsi positivi dopo questa fase, per filtrare, utilizzare densità bordo. Densità bordo è definito come il numero di pixel bianchi / numero totale di pixel in un rettangolo. Impostare una soglia per la densità bordo. (Io ho usato 0.5)

enter image description qui

  1. Sfocare regioni rilevati.

enter image description qui

È possibile applicare altri filtri si ritengono adatti per aumentare la richiamo e precisione. Il rilevamento può anche essere addestrato utilizzando HOG + SVM per aumentare la precisione.

C'è un nuovo, libreria open source su GitHub che fa ANPR per Stati Uniti e piatti europei. Sembra abbastanza preciso e dovrebbe fare esattamente quello che vi serve (riconoscere le regioni della piastra). Ecco il progetto GitHub: https://github.com/openalpr/openalpr

mi sono imbattuto in questa che è scritto in Java javaANPR , sto cercando ac biblioteca # pure.

Vorrei un sistema dove posso puntare una telecamera ad alcune barche a vela, che hanno tutti grandi, numeri identificabili su di loro, e lo hanno identificare le barche e inviare un tweet quando navigano passato una videocamera.

Ho fatto qualche googling su questo un paio di mesi fa. Ci sono un bel paio di carte su questo argomento, ma non ho mai Vedi qualche implementazione open-source di cemento. Ci sono un sacco di implementazioni commerciali però, ma nessuno di loro con una citazione di prezzi, quindi sono probabilmente abbastanza costoso.

provare questo semplice numero di targa automatico Sistema di riconoscimento

http://opos.codeplex.com/

Open source e scritto in C #

Dai un'occhiata alla Java ANPR . Libero riconoscimento targhe ...

Sì io uso gocr a http://jocr.sourceforge.net/ la sua applicazione a riga di comando, che un si potrebbe eseguire dalla vostra applicazione. Io lo uso in un paio di mie applicazioni.

alte prestazioni ANPR Biblioteca - http://www.dtksoft.com/dtkanpr.php. Questo è commerciale, ma forniscono chiave di prova.

E 'forse funziona guardando software recoqnition personaggio in quanto vi sono molte librerie là fuori che eseguono la stessa cosa. I leggendo un'immagine e riporlo. ufficio Micrsoft è in grado di leggere i file tiff e tornare alfanumerici

La sfocatura non è un problema, ma c'è una biblioteca o di un componente (open source preferito) che vi aiuterà a trovare una licenza all'interno di una foto?

Ans: Il motore software CARMEN FreeFlow ANPR (Commerical)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top