Applicazione multi-dispositivo per acquisire, elaborare e registrare video in tempo reale. Supporta PC (webcam USB), Jetson Nano e Raspberry Pi con pipeline ottimizzate per ogni hardware.
- PC: Webcam USB standard (Windows, macOS, Linux)
- Jetson Nano: Pipeline OpenCV con accelerazione CUDA
- Raspberry Pi: Picamera2 con encoder H264 nativo
- ✅ Visualizzazione live della fotocamera
- ✅ Scatto foto (PNG/JPG)
- ✅ Registrazione video (MP4)
- ✅ Timer programmabile per foto/video
- ✅ Galleria media integrata
- ✅ Riconoscimento volti (Face Detection)
- ✅ Rilevamento contorni (Edge Detection)
- ✅ Rilevamento oggetti YOLO
- ✅ Conversione HSV e filtri colore
- ✅ Controllo luminosità, contrasto, saturazione
- ✅ Specchiamento orizzontale/verticale
- ✅ UI moderna e intuitiva (PyQt6)
- ✅ Notifiche on-screen (OSD)
- ✅ Controlli laterali per parametri
- ✅ Menu dispositivo dinamico
- ✅ Selezione webcam multi-camera
- Python 3.7+
- Sistema operativo: Linux, Windows o macOS
# Clona o scarica il progetto
cd VisionPy_Pro
# Rendi eseguibili gli script
chmod +x setup.sh run.sh
# Installa le dipendenze
./setup.sh
# Avvia l'applicazione
./run.shpython3-pyqt6- Framework UIpython3-opencv- Elaborazione videopython3-numpy- Calcoli numericipython3-picamera2- Camera Raspberry Piffmpeg- Codec videocmake- Build tools
- Esegui
./run.sh - Verrà mostrato il dialog di selezione dispositivo
- Scegli il tuo dispositivo:
- 🖥️ PC (webcam USB)
- 🟢 Jetson Nano (CSI camera)
- 🍓 Raspberry Pi (Picamera2)
- La scelta viene salvata automaticamente
┌──────────────────────────────────────────┐
│ VisionPy Pro │
├──────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────┐ │
│ │ │ │ Controlli │ │
│ │ Feed Video │ │ Laterali │ │
│ │ │ │ │ │
│ └──────────────────┘ └──────────────┘ │
│ │
├──────────────────────────────────────────┤
│ Dispositivo: PC | 1280x720 | 30 FPS │
└──────────────────────────────────────────┘
| Tasto | Azione |
|---|---|
| C | Scatta una foto |
| V | Avvia/Ferma registrazione video |
| M | Attiva/Disattiva specchiamento |
| T | Avvia timer (foto/video) |
| F11 | Attiva/Disattiva schermo intero |
| ESC | Chiudi applicazione |
- Salva con nome (esporta immagine)
- Esci
- Schermo intero
- 🖥️ Usa PC
- 🟢 Usa Jetson Nano
- 🍓 Usa Raspberry Pi
- Seleziona Webcam (0-4) su PC/Jetson
- Elenco scorciatoie da tastiera
- Informazioni sull'applicazione
Seleziona tra diverse modalità di elaborazione:
- Normale - Video senza elaborazione
- Facce - Rilevamento volti
- Contorni - Edge detection
- YOLO - Rilevamento oggetti
- Filtro Colore - Filtri HSV personalizzabili
- Luminosità - Regola luminosità
- Contrasto - Regola contrasto
- Saturazione - Regola colori
- HSV Min/Max - Sliders per Hue, Saturation, Value
- Specchiamento - Flip verticale/orizzontale
- OSD - Visualizza informazioni on-screen
- Musica di Sottofondo - On/Off
- Azione - Foto o Video
- Ritardo - Secondi prima dell'azione
VisionPy_Pro/
├── main.py # Entry point
├── MainWindow.py # Finestra principale
├── CameraManager.py # Gestione fotocamere
├── CameraThread.py # Thread cattura video
├── RecordingThread.py # Thread registrazione
├── CVProcessor.py # Elaborazione OpenCV
├── DeviceManager.py # Selezione dispositivo
├── SettingsManager.py # Gestione configurazione
├── ControlPanel.py # Pannello controlli
├── CameraWidget.py # Widget visualizzazione
├── GalleryDialog.py # Galleria media
├── MenuBar.py # Barra menu
├── TimerManager.py # Gestore timer
├── PreviewWidget.py # Anteprima foto
├── OSDNotification.py # Notifiche on-screen
├── PreviewDialog.py # Dialog anteprima
├── MediaThumbnailWidget.py # Thumbnail media
├── setup.sh # Script installazione
├── run.sh # Script avvio
└── README.md # Questo file
~/VisionPy_Pro/ # Home directory app
├── settings.json # Configurazione salvata
├── photos/ # Foto catturate
└── videos/ # Video registrati
Salvato in ~/VisionPy_Pro/settings.json:
{
"music_muted": false,
"device_type": "pc",
"resolution": [1280, 720],
"fps": 30,
"camera_index": 0
}| Campo | Descrizione | Valori |
|---|---|---|
music_muted |
Musica di sottofondo | true / false |
device_type |
Dispositivo in uso | "pc", "jetson_nano", "raspberry_pi" |
resolution |
Risoluzione video | [width, height] |
fps |
Frame per secondo | 25, 30, 60 |
camera_index |
Indice webcam (PC/Jetson) | 0, 1, 2, 3, 4 |
Visualizza il video senza elaborazione.
Rileva e evidenzia i volti nella scena:
- Rettangoli verdi intorno ai volti
- Basato su Haar Cascade
- Tempo reale
Evidenzia i contorni degli oggetti:
- Filtro Canny
- Contorni bianchi su sfondo nero
- Utile per analisi forme
Riconoscimento oggetti avanzato:
- Modello YOLO pre-addestrato
- Classe e confidenza per ogni oggetto
- Riquadri colorati con label
Isola colori specifici:
- Regola Hue, Saturation, Value
- Preview in tempo reale
- Utile per tracking colori
Sorgente: cv2.VideoCapture
Codec: H264/H265
Risoluzione: 320x240 → 1920x1080
FPS: 15-60 (dipende webcam)
Latenza: 50-100ms
Sorgente: cv2.VideoCapture (V4L2)
GPU: NVIDIA Maxwell (CUDA)
Codec: H264 hardware
Risoluzione: 1280x720, 1920x1080
FPS: 20-30
Latenza: 30-50ms
Sorgente: Picamera2
ISP: Raspberry Pi ISP
Codec: H264 hardware
Risoluzione: 1280x720, 1920x1080
FPS: 25-30
Latenza: 20-40ms
| Componente | Minimo | Consigliato |
|---|---|---|
| CPU | Dual-core 1GHz | Quad-core 2GHz+ |
| RAM | 512MB | 2GB+ |
| Storage | 500MB | 2GB+ |
| Python | 3.7 | 3.8+ |
Soluzione:
# Verifica webcam disponibili
ls -la /dev/video*
# Su Raspberry Pi, abilita la camera
sudo raspi-config
# Vai a: Interface Options → Camera → Enable
# Riavvia
sudo rebootSoluzione:
- Usa risoluzioni inferiori (640x480 invece di 1920x1080)
- Riduci FPS
- Su Jetson Nano, beneficia dell'accelerazione GPU
Soluzione:
# Reinstalla picamera2
sudo apt install -y python3-picamera2
# Verifica installazione
python3 -c "from picamera2 import Picamera2"Soluzione:
chmod +x setup.sh run.shMainWindow (PyQt6)
├─ CameraThread (QThread)
│ ├─ CameraManager (cattura frame)
│ └─ CVProcessor (elaborazione)
├─ RecordingThread (QThread)
│ └─ Salvataggio video
├─ ControlPanel (UI controlli)
└─ MenuBar (menu)
SettingsManager (JSON storage)
└─ ~/VisionPy_Pro/settings.json
DeviceManager (selezione dispositivo)
├─ PC
├─ Jetson Nano
└─ Raspberry Pi
Per aggiungere un nuovo dispositivo:
- Aggiorna DeviceManager.py:
class DeviceType(Enum):
PC = "pc"
JETSON_NANO = "jetson_nano"
RASPBERRY_PI = "raspberry_pi"
MIO_DISPOSITIVO = "mio_dispositivo" # ← NUOVO- Aggiungi metodi in CameraManager.py:
def _start_mio_dispositivo(self):
# Implementa logica di avvio
def _get_frame_mio_dispositivo(self):
# Implementa cattura frameMIT License - Vedi LICENSE file
Segnalazioni di bug e pull requests sono benvenuti!
Per domande o problemi:
- Controlla il troubleshooting sopra
- Leggi i commenti nel codice
- Verifica la configurazione in settings.json
VisionPy Pro v2.0 - Acquisizione e elaborazione video multi-dispositivo
Supporta: PC • Jetson Nano • Raspberry Pi
Sviluppato con ❤️ usando PyQt6 e OpenCV