.. note:: Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati. **Perché Unirsi?** - **Supporto Tecnico Esperto**: Risolvi i problemi post-vendita e affronta le sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e Condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze. - **Anteprime Esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime. - **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni Festive e Giveaway**: Partecipa a giveaway e promozioni festive. 👉 Sei pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso! .. _3.1.1_py_pi5: 3.1.1 Modulo Fotografia ========================== Introduzione -------------- In questo kit, dotato di un modulo fotocamera, proviamo a scattare una foto con Raspberry Pi. Componenti Necessari ---------------------- In questo progetto, abbiamo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/3.3.1_photograph_list.png :width: 800 È decisamente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - COMPONENTI NEL KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_camera_module` - |link_camera_buy| Procedure Sperimentali ------------------------- **Passo 1:** Accedi al desktop di Raspberry Pi. Potresti aver bisogno di uno schermo per un'esperienza migliore, fai riferimento a: `Collega il tuo Raspberry Pi `_. Oppure accedi al desktop di Raspberry Pi da remoto, per un tutorial dettagliato consulta :ref:`remote_desktop`. **Passo 2:** Apri un Terminale e vai nella cartella del codice. .. code-block:: cd ~/raphael-kit/python-pi5 **Passo 3:** Esegui il comando. .. code-block:: sudo python3 3.1.1_PhotographModule_zero.py Dopo l'esecuzione del codice, la fotocamera scatterà una foto. Ora puoi vedere la foto chiamata ``my_photo.jpg`` nella directory ``~``. .. note:: Puoi anche aprire ``3.1.1_PhotographModule.py`` nel percorso ``~/raphael-kit/python-pi5/`` con un IDE Python, fare clic sul pulsante Esegui per avviare e utilizzare il pulsante Stop per interrompere il codice. Se desideri scaricare la foto sul tuo PC, fai riferimento a :ref:`filezilla`. .. warning:: Se viene visualizzato l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, fare riferimento a :ref:`faq_soc`. **Code** .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os # Ottieni il nome dell'utente attualmente connesso user = os.getlogin() # Ottieni il percorso della directory home dell'utente user_home = os.path.expanduser(f'~{user}') # Crea un'istanza di Picamera2 camera = Picamera2() # Recupera la configurazione di anteprima predefinita preview_config = camera.preview_configuration try: # Imposta le dimensioni e il formato dell'anteprima preview_config.size = (800, 600) preview_config.format = 'XRGB8888' # Avvia l'anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) # Avvia la fotocamera camera.start() # Cattura e salva una foto nella directory home dell'utente camera.capture_file(f'{user_home}/my_photo.jpg') except KeyboardInterrupt: # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C) camera.stop_preview() pass **Spiegazione del Codice** #. Importa le classi ``Picamera2`` e ``Preview`` dalla libreria picamera2, e il modulo ``os`` per interagire con il sistema operativo. .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os #. Recupera il nome dell'utente attualmente connesso e il percorso della sua directory home. .. code-block:: python # Ottieni il nome dell'utente attualmente connesso user = os.getlogin() # Ottieni il percorso della directory home dell'utente user_home = os.path.expanduser(f'~{user}') #. Crea un'istanza della classe ``Picamera2`` e recupera la configurazione di anteprima predefinita. .. code-block:: python # Crea un'istanza di Picamera2 camera = Picamera2() # Recupera la configurazione di anteprima predefinita preview_config = camera.preview_configuration #. Imposta la dimensione e il formato dell'anteprima della fotocamera. La dimensione è impostata su 800x600 pixel e il formato è impostato su ``XRGB8888``. .. code-block:: python try: # Imposta le dimensioni e il formato dell'anteprima preview_config.size = (800, 600) preview_config.format = 'XRGB8888' ... #. Avvia l'anteprima della fotocamera in modalità QTGL, quindi avvia la fotocamera stessa. .. code-block:: python try: ... # Avvia l'anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) # Avvia la fotocamera camera.start() ... #. Cattura un'immagine dalla fotocamera, memorizzandola in ``~/``. .. code-block:: python try: ... # Cattura e salva una foto nella directory home dell'utente camera.capture_file(f'{user_home}/my_photo.jpg') .. note:: Puoi utilizzare la funzione ``camera.capture()`` insieme al ciclo ``for`` per ottenere uno scatto continuo. E utilizzare la funzione ``delay`` per regolare l'intervallo di tempo tra gli scatti. .. code-block:: python for i in 5: camera.capture(f'{user_home}/my_photo%s.jpg' % i) #. Questo blocco di codice gestisce un'interruzione da tastiera (come Ctrl+C) interrompendo l'anteprima della fotocamera. L'istruzione ``pass`` viene utilizzata per gestire l'eccezione senza fare nulla. .. code-block:: python except KeyboardInterrupt: # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C) camera.stop_preview() pass