Nota
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 [Qui] e unisciti oggi stesso!
3.1.2 Modulo Video
Introduzione
Oltre a scattare foto, il Modulo Fotocamera può essere utilizzato anche per registrare video.
Componenti Necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
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 Desktop Remoto.
Passo 2: Apri un Terminale e vai nella cartella del codice.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui il comando.
sudo python3 3.1.2_VideoModule_zero.py
Esegui il codice per avviare la registrazione. Premi Ctrl+C per terminare la registrazione. Il video verrà chiamato my_video.h264 e salvato nella directory ~.
Nota
Puoi anche aprire 3.1.2_PhotographModule_zero.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 inviare le foto al tuo PC, fai riferimento a Software FileZilla.
Avvertimento
Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..
Code
#!/usr/bin/env python3
import time
from picamera2 import Picamera2, Preview
from picamera2.encoders import H264Encoder
from picamera2.outputs import FfmpegOutput
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:
# Configura la dimensione 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)
# Definisci la configurazione video con dimensioni, frame rate e buffer
conf = {'size': (800, 600)}
controls = {'FrameRate': 40}
config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12)
# Crea un codificatore video con un bitrate specificato
encoder = H264Encoder(bitrate=10000000)
# Definisci il file di output per il video
output = FfmpegOutput(f'{user_home}/my_video.mp4')
# Configura e avvia la registrazione
camera.configure(config)
camera.start_recording(encoder, output)
# Registra per 10 secondi
time.sleep(10)
# Interrompi la registrazione
camera.stop_recording()
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 librerie e le classi necessarie. La libreria
picamera2viene utilizzata per il controllo della fotocamera,H264Encoderper la codifica video eFfmpegOutputper definire il file di output del video.#!/usr/bin/env python3 import time from picamera2 import Picamera2, Preview from picamera2.encoders import H264Encoder from picamera2.outputs import FfmpegOutput import os
Recupera il nome dell’utente attualmente connesso e il percorso della sua directory home.
# 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
Picamera2e recupera la configurazione di anteprima predefinita.# 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.try: # Configura la dimensione e il formato dell'anteprima preview_config.size = (800, 600) preview_config.format = 'XRGB8888'
Avvia l’anteprima della fotocamera in modalità QTGL, una modalità di anteprima grafica.
try: ... # Avvia l'anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) ...
Definisce la configurazione video con una dimensione del frame di 800x600 pixel e un frame rate di 40 fotogrammi al secondo.
try: ... # Definisci la configurazione video con dimensioni, frame rate e buffer conf = {'size': (800, 600)} controls = {'FrameRate': 40} config = camera.create_video_configuration(main=conf, controls=controls, buffer_count=12) ...
Crea un codificatore video con un bitrate specificato di 10 Mbps, utilizzando il formato di codifica H.264. Configura il percorso del file di output per il video, salvandolo come
my_video.mp4nella directory home dell’utente.try: ... # Crea un codificatore video con un bitrate specificato encoder = H264Encoder(bitrate=10000000) # Definisci il file di output per il video output = FfmpegOutput(f'{user_home}/my_video.mp4') ...
Configura la fotocamera con le impostazioni video definite, avvia la registrazione utilizzando il codificatore e il file di output specificato, registra per 10 secondi e poi interrompe la registrazione.
try: ... # Configura e avvia la registrazione camera.configure(config) camera.start_recording(encoder, output) # Registra per 10 secondi time.sleep(10) # Interrompi la registrazione camera.stop_recording()
Questo blocco di codice gestisce un’interruzione da tastiera (come Ctrl+C) interrompendo l’anteprima della fotocamera. L’istruzione
passviene utilizzata per gestire l’eccezione senza fare nulla.except KeyboardInterrupt: # Interrompe l'anteprima della fotocamera se si verifica un'interruzione da tastiera (ad esempio, Ctrl+C) camera.stop_preview() pass