Étape 2 : Le code
La deuxième étape dans la fabrication du système consiste à mettre en place le système de capture. Dans cette section, nous allons créer un environnement virtuel, installer les bibliothèques nécessaires pour le travail, et ajouter des notes supplémentaires sur chaque composant.
Pour se cultiver
pip est utilisé pour télécharger et installer des paquets directement depuis PyPI (Python Package Index), hébergé par la Python Software Foundation. Il s'agit d'un gestionnaire de paquets spécialisé exclusivement pour les paquets Python.
apt-get, en revanche, est utilisé pour télécharger et installer des paquets depuis les dépôts Ubuntu hébergés par Canonical.
Voici quelques différences clés entre l'installation des paquets Python avec apt-get et pip :
1. Disponibilité des Paquets: Canonical fournit des paquets pour un ensemble sélectionné de modules Python. En revanche, PyPI héberge une gamme beaucoup plus large de modules Python. Par conséquent, de nombreux modules Python ne peuvent pas être installés via apt-get mais sont disponibles sur PyPI.
2. Contrôle des Versions : Canonical héberge généralement une seule version de chaque paquet (généralement la plus récente ou celle sortie récemment). Avec apt-get, vous ne pouvez pas choisir quelle version d'un paquet Python installer. En revanche, pip vous permet d'installer n'importe quelle version d'un paquet précédemment téléchargé sur PyPI. Cette flexibilité est essentielle pour gérer les conflits de dépendances.
3. Portée de l'Installation : apt-get installe les modules Python de manière globale sur le système, ce qui signifie qu'ils sont disponibles globalement. Cela peut entraîner des conflits si différents projets nécessitent différentes versions du même paquet. pip résout ce problème en installant les paquets dans l'environnement virtuel du projet (virtualenv). Cette isolation garantit que les dépendances sont gérées indépendamment pour chaque projet.
4. Conventions de Nom de Paquet : Canonical nomme généralement les paquets Python 2 comme `python-<nom_du_paquet>` et les paquets Python 3 comme `python3-<nom_du_paquet>`. En revanche, pip simplifie l'installation des paquets en utilisant `<nom_du_paquet>` pour les paquets Python 2 et Python 3.
Choix entre apt-get et pip:
apt-get et pip sont tous deux des gestionnaires de paquets matures qui gèrent la résolution des dépendances lors de l'installation. Vous pouvez utiliser l'un ou l'autre en fonction de vos préférences. Cependant, envisagez d'utiliser **pip** dans les scénarios suivants :
- Lorsque vous avez besoin d'installer une version spécifique d'un paquet Python.
- Lorsque vous souhaitez installer des paquets dans l'environnement virtuel d'un projet.
- Lorsque le paquet dont vous avez besoin n'est disponible que sur PyPI.
Si vous êtes à l'aise avec l'installation de paquets globalement et qu'il n'y a pas de conflits de versions, apt-get ou pip conviendront pour l'installation générale de paquets Python.
C'est quoi un Environment Virtuelle :https://www.geeksforgeeks.org/python-virtual-environment/
Installation d'un Environment Virtuelle
On utilisera pip depuis un environnement virtuel pour installer les bibliothèques.
Une fois connecté à votre Raspberry Pi via SSH:
Étape 1 : Naviguer vers votre répertoire de projet
Accédez au répertoire où vous souhaitez créer votre environnement virtuel, ex :
/home/pi/Desktop/scripts
Étape 2 : Créer l'environnement virtuel
Utilisez la commande `python3 -m venv venv` pour créer un environnement virtuel. Remplacez `venv` par le nom que vous souhaitez donner à votre environnement virtuel.
python3 -m venv venv
Étape 3 : Activer l'environnement virtuel
source venv/bin/activate
Étape 4 : Déactiver l'environnement virtuel
Vous ne pourriez pas lancer le code si environnement virtuelle est déactiver
deactivate
Étape 5 : Installer les modules requis
Si pip
n'est pas déjà installé sur votre système, vous pouvez l'installer en utilisant la commande adaptée à votre distribution Linux. Par exemple
sudo apt-get install python3-pip
puis
pip install adafruit-circuitpython-rgb-display
pip install adafruit-blinka busio digitalio
pip install opencv-python
pip install pillow
verifier les bibliothèques installées
(venv) pi@raspberrypi:~/Desktop/scripts $ pip list
Package Version
---------------------------------------- ---------
Adafruit-Blinka 8.45.0
adafruit-circuitpython-busdevice 5.2.9
adafruit-circuitpython-connectionmanager 3.1.1
adafruit-circuitpython-requests 4.1.1
adafruit-circuitpython-rgb-display 3.12.4
adafruit-circuitpython-typing 1.10.3
Adafruit-PlatformDetect 3.71.0
Adafruit-PureIO 1.1.11
binho-host-adapter 0.1.6
numpy 2.0.0
opencv-python 4.10.0.84
pillow 10.3.0
pip 23.0.1
pyftdi 0.55.4
pyserial 3.5
pyusb 1.2.1
RPi.GPIO 0.7.1
rpi-ws281x 5.0.0
setuptools 66.1.1
sysv-ipc 1.1.0
typing_extensions 4.12.2
Le code réel
vous pouvez installed le code depuis le Git ou bien depuis la(_--__) , sauvegarder tous les fichiers dans un repertoitre ex : scripts
puis rendez les fichiers exécutable avec par exemple :
chmod -R +x os5
Bref, explications des fichiers.
(venv) pi@raspberrypi:~/Desktop/scripts $ ls
camera_feed_test.py camera_properties.txt os1 os2 os3 os4 os5 venv
camera_feed_test.py est utilisé pour tester les différentes capacités de votre caméra. Nous allons apprendre ensuite comment les trouver et les stocker dans un fichier, par exemple : camera_properties.txt. Les fichiers os1...5 sont les différentes itérations du système. Nous allons nous concentrer uniquement sur os5.Pour plus d'informations à propos des autres systèmes d'exploitation, veuillez consulter le rapport complet.
(venv) pi@raspberrypi:~/Desktop/scripts/os5 $ ls
button.py camera.py draw.py main.py menu.py __pycache__ rotary_encoder.py screen.py
Vous pouvez trouver une documentation de chaque classe dans les fichiers à la fin.
rotary_encoder.py : rapport
screen.py : rapport
camera.py : comments trouvez les caractéristiques de votre caméra
(Consultez le rapport pour plus d'informations à propos de la caméra.)
https://www.mankier.com/1/v4l2-ctl
Listez tous les périphériques vidéo :
'v4l2-ctl --list-devices'
(venv) pi@raspberrypi:~/Desktop/scripts/os5 $ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
/dev/video11
/dev/video12
/dev/video18
/dev/video31
/dev/media2
bcm2835-isp (platform:bcm2835-isp):
/dev/video13
/dev/video14
/dev/video15
/dev/video16
/dev/video20
/dev/video21
/dev/video22
/dev/video23
/dev/media0
/dev/media1
HD Webcam C525 (usb-3f980000.usb-1.2):
/dev/video0
/dev/video1
/dev/media3
Détectez votre appareil, puis :
Lister les formats vidéo supportés et les résolutions d'un périphérique vidéo spécifique :
'v4l2-ctl --list-formats-ext --device path/to/video_device'
(venv) pi@raspberrypi:~/Desktop/scripts/os5 $ v4l2-ctl --list-formats-ext --device /dev/video0
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.042s (24.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Maintenant copier toutes ces informations dans un fichier .txt et tester les avec camera_feed_test.py
Quoi choisir et comment : Testez tous les formats , commencez par changer (---------) dans camera_feed_test.py
menu.py :
la toutes les composantes du systemees se rejoints ensmble