Riconoscimento targhe con Raspberry Pi CM4 e Ochin V2

In questo articolo esploreremo come realizzare un sistema automatizzato per il riconoscimento delle targhe automobilistiche utilizzando Raspberry Pi Compute Module 4 (CM4), la carrier board Ochin V2 e una Raspberry Pi Camera. Questo progetto consente di leggere le targhe dei veicoli ogni pochi secondi e, in caso di rilevamento, di inviare una foto della targa con un messaggio contenente i caratteri riconosciuti.

L’obiettivo sarà implementare un sistema che utilizza OpenCV per rilevare la targa e Tesseract OCR per leggere il testo. Inoltre, vedremo come configurare un bot Telegram per ricevere i risultati direttamente sul proprio smartphone.

Prima di cominciare, per coloro i quali non conoscono la carrier board ochin V2 consiglio di leggere i seguenti articoli:

Componenti necessari

Applicazioni pratiche

Questo sistema può essere impiegato in diversi contesti, tra cui:

  • Automatizzazione dei caselli stradali
  • Monitoraggio di veicoli non autorizzati
  • Sistemi di sicurezza automatizzati
  • Apertura di cancelli tramite riconoscimento delle targhe

Installazione e configurazione di Raspberry Pi e Camera

Se non hai mai configurato una Raspberry Pi Camera, ti consiglio di leggere la guida specifica sulla configurazione della Raspberry Pi Camera che trovi qui.

Prima di iniziare, è importante assicurarsi che il sistema sia aggiornato. Apri il terminale e digita:

Successivamente, installa le librerie necessarie come libcamera, utilizzata per catturare immagini con la Pi Camera, e Tesseract OCR, che verrà impiegata per il riconoscimento dei caratteri delle targhe automobilistiche:

Creare un ambiente virtuale Python

Per evitare conflitti con i pacchetti preinstallati, ti consiglio di lavorare all’interno di un ambiente virtuale Python. Ecco come crearlo:


All’interno dell’ambiente virtuale, installa le librerie necessarie:

Rilevamento delle targhe: Passaggi principali

Il processo di riconoscimento della targa segue tre fasi fondamentali:

  1. Rilevamento della targa: Utilizziamo OpenCV per individuare la targa nell’immagine, sfruttando la tecnica di rilevamento dei contorni.
  2. Segmentazione dei caratteri: Una volta rilevata la targa, viene segmentata per isolare i caratteri.
  3. Riconoscimento con OCR: Tesseract OCR viene utilizzato per convertire l’immagine della targa in testo leggibile.

Configurazione del bot Telegram con Telepot

Il primo passo consiste nell’aprire l’applicazione telegram. Una volta aperta cerchiamo “BotFather” tramite la funzione cerca cliccando sull’apposita lente di ingrandimento.

“BotFather” è un bot che permette di creare altri bot.

Avviamo il bot scrivendo “/start“, poi premiamo invio.

raspberry

Per creare un nuovo bot digitiamo “/newbot”.

BotFather ci chiederà di assegnare un nome al nostro nuovo Bot, basta digitare un qualsiasi nome e poi premere Invio.

Dobbiamo anche inserire un username che lo renderà riconoscibile pubblicamente. Username deve terminare in “Bot” o ” _bot”.

In seguito alla assegnazione del nome e dell’username BotFather ci comunicherà informazioni importanti in seguito per compilare il codice per il funzionamento della camera e dell’invio dati. ATTENZIONE: QUESTE INFOMAZIONI LE DOVREMMO TENERE SOLO PER NOI. La prima parte riguarda il percorso per trovare il nostro bot. La seconda è la API che sarà utilizzato nel nostro codice.

raspberry

Per l’implementazione del bot occorre una specifica libreria. Per installare questa libreria basta eseguire il comando (prima usciamo dalle eventuali directory digitando cd).

pip install telepot

Perché abbiamo scelto Telepot? Sebbene esistano altre librerie come python-telegram-bot o aiogram, Telepot offre una maggiore semplicità d’uso per progetti come questo, richiedendo meno configurazioni e risultando più adatto per l’invio rapido di messaggi e foto.

Codice Python per catturare e inviare targhe

Crea la cartella chiamata “timelapse” su desktop, cosi potrai copiare e incollare il codice.

Ecco un esempio di codice Python che cattura le immagini, le elabora e invia i risultati tramite il bot Telegram:

Esegui il codice, vai sul bot e scrivi /start, e mettiamo una bella targa davanti alla cam.

Ecco qui il risultato:

targhe

Spiegazione dei parametri di libcamera-still

Il comando libcamera-still che utilizziamo per catturare le immagini include vari parametri:

  • -t 100: Imposta il tempo di attesa per l’acquisizione dell’immagine.
  • --autofocus-mode auto: Attiva la modalità autofocus automatica.
  • -o {image_path}: Specifica il percorso di salvataggio dell’immagine.
  • --width 1920 --height 1080: Definisce la risoluzione dell’immagine in pixel.
  • --quality 90: Imposta la qualità dell’immagine in percentuale (90%).

Per ulteriori dettagli sui parametri, puoi consultare la documentazione ufficiale di Arducam.

Considerazioni finali

I risultati di questo sistema dipendono dalla qualità delle immagini acquisite. Fattori come la luce, l’angolazione e la chiarezza dell’immagine possono influenzare la precisione del riconoscimento. Consigliamo di ottimizzare il setup per migliorare l’affidabilità del sistema.

Possibili problemi

  • Verifica se la cartella timelapse è stata creata correttamente sul desktop
  • Permessi insufficienti: Assicurati che lo script Python abbia i permessi necessari per scrivere nella cartella timelapse. Puoi modificarli con:

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.