You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/it/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

8.5 KiB

Catturare un'immagine - Raspberry Pi

In questa parte della lezione, aggiungerai un sensore della fotocamera al tuo Raspberry Pi e leggerai immagini da esso.

Hardware

Il Raspberry Pi necessita di una fotocamera.

La fotocamera che utilizzerai è un Raspberry Pi Camera Module. Questa fotocamera è progettata per funzionare con il Raspberry Pi e si collega tramite un connettore dedicato sul Pi.

💁 Questa fotocamera utilizza il Camera Serial Interface, un protocollo dell'alleanza Mobile Industry Processor Interface, noto come MIPI-CSI. Si tratta di un protocollo dedicato per l'invio di immagini.

Collegare la fotocamera

La fotocamera può essere collegata al Raspberry Pi utilizzando un cavo a nastro.

Attività - collegare la fotocamera

Una fotocamera Raspberry Pi

  1. Spegni il Raspberry Pi.

  2. Collega il cavo a nastro fornito con la fotocamera alla fotocamera stessa. Per farlo, tira delicatamente la clip di plastica nera nel supporto in modo che si apra leggermente, quindi inserisci il cavo nella presa, con il lato blu rivolto lontano dall'obiettivo e le strisce metalliche rivolte verso l'obiettivo. Una volta inserito completamente, spingi la clip di plastica nera per fissarlo.

    Puoi trovare un'animazione che mostra come aprire la clip e inserire il cavo nella documentazione introduttiva del modulo fotocamera Raspberry Pi.

    Il cavo a nastro inserito nel modulo fotocamera

  3. Rimuovi il Grove Base Hat dal Raspberry Pi.

  4. Fai passare il cavo a nastro attraverso lo slot per la fotocamera nel Grove Base Hat. Assicurati che il lato blu del cavo sia rivolto verso le porte analogiche etichettate A0, A1, ecc.

    Il cavo a nastro che passa attraverso il Grove Base Hat

  5. Inserisci il cavo a nastro nella porta della fotocamera sul Raspberry Pi. Ancora una volta, solleva la clip di plastica nera, inserisci il cavo, quindi spingi la clip per fissarlo. Il lato blu del cavo dovrebbe essere rivolto verso le porte USB ed Ethernet.

    Il cavo a nastro collegato alla presa della fotocamera sul Raspberry Pi

  6. Rimonta il Grove Base Hat.

Programmare la fotocamera

Ora il Raspberry Pi può essere programmato per utilizzare la fotocamera tramite la libreria Python PiCamera.

Attività - abilitare la modalità fotocamera legacy

Purtroppo, con il rilascio di Raspberry Pi OS Bullseye, il software della fotocamera incluso nel sistema operativo è cambiato, il che significa che di default PiCamera non funziona più. È in fase di sviluppo un sostituto, chiamato PiCamera2, ma non è ancora pronto per l'uso.

Per ora, puoi impostare il tuo Raspberry Pi in modalità fotocamera legacy per consentire il funzionamento di PiCamera. La presa della fotocamera è anche disabilitata di default, ma l'attivazione del software legacy della fotocamera abilita automaticamente la presa.

  1. Accendi il Raspberry Pi e attendi che si avvii.

  2. Avvia VS Code, direttamente sul Raspberry Pi o connettendoti tramite l'estensione Remote SSH.

  3. Esegui i seguenti comandi dal terminale:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    Questo comando attiverà un'impostazione per abilitare il software legacy della fotocamera, quindi riavvierà il Raspberry Pi per applicare l'impostazione.

  4. Attendi che il Raspberry Pi si riavvii, quindi riapri VS Code.

Attività - programmare la fotocamera

Programma il dispositivo.

  1. Dal terminale, crea una nuova cartella nella directory home dell'utente pi chiamata fruit-quality-detector. Crea un file in questa cartella chiamato app.py.

  2. Apri questa cartella in VS Code.

  3. Per interagire con la fotocamera, puoi utilizzare la libreria Python PiCamera. Installa il pacchetto Pip con il seguente comando:

    pip3 install picamera
    
  4. Aggiungi il seguente codice al file app.py:

    import io
    import time
    from picamera import PiCamera
    

    Questo codice importa alcune librerie necessarie, inclusa la libreria PiCamera.

  5. Aggiungi il seguente codice sotto per inizializzare la fotocamera:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    
    time.sleep(2)
    

    Questo codice crea un oggetto PiCamera e imposta la risoluzione a 640x480. Sebbene siano supportate risoluzioni più alte (fino a 3280x2464), il classificatore di immagini funziona con immagini molto più piccole (227x227), quindi non è necessario catturare e inviare immagini più grandi.

    La riga camera.rotation = 0 imposta la rotazione dell'immagine. Il cavo a nastro entra nella parte inferiore della fotocamera, ma se la fotocamera è stata ruotata per puntare meglio verso l'oggetto da classificare, puoi modificare questa riga con il numero di gradi di rotazione.

    La fotocamera sospesa sopra una lattina

    Ad esempio, se sospendi il cavo a nastro sopra qualcosa in modo che si trovi nella parte superiore della fotocamera, imposta la rotazione a 180:

    camera.rotation = 180
    

    La fotocamera impiega alcuni secondi per avviarsi, da qui la riga time.sleep(2).

  6. Aggiungi il seguente codice sotto per catturare l'immagine come dati binari:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    Questo codice crea un oggetto BytesIO per memorizzare i dati binari. L'immagine viene letta dalla fotocamera come file JPEG e memorizzata in questo oggetto. Questo oggetto ha un indicatore di posizione per sapere dove si trova nei dati, quindi la riga image.seek(0) sposta questa posizione all'inizio in modo che tutti i dati possano essere letti successivamente.

  7. Sotto questo, aggiungi il seguente codice per salvare l'immagine in un file:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    Questo codice apre un file chiamato image.jpg per la scrittura, quindi legge tutti i dati dall'oggetto BytesIO e li scrive nel file.

    💁 Puoi catturare l'immagine direttamente in un file invece che in un oggetto BytesIO passando il nome del file alla chiamata camera.capture. Il motivo per utilizzare l'oggetto BytesIO è che più avanti in questa lezione potrai inviare l'immagine al tuo classificatore di immagini.

  8. Punta la fotocamera verso qualcosa ed esegui questo codice.

  9. Un'immagine verrà catturata e salvata come image.jpg nella cartella corrente. Vedrai questo file nell'esploratore di VS Code. Seleziona il file per visualizzare l'immagine. Se necessita di rotazione, aggiorna la riga camera.rotation = 0 come necessario e scatta un'altra foto.

💁 Puoi trovare questo codice nella cartella code-camera/pi.

😀 Il tuo programma per la fotocamera è stato un successo!

Disclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.