🛠 Vision par caméra : OpenCV sur le SoC x86
Objectifs
Exploiter la puissance x86 de l'Alpha pour de la vision temps réel : capter une caméra USB (ou Intel RealSense, explicitement citée par la doc officielle comme compatible) sur l'un des trois ports USB 3.0 Type-A, et traiter les images avec OpenCV en Python — capture, redimensionnement, détection de visage. C'est le type de charge qu'un microcontrôleur ne peut pas aborder, mais que le Core m3-7Y30 encaisse.
Matériel
- LattePanda Alpha sous Windows ou Linux (Linux : distribution récente conseillée pour UVC ; support communautaire au-delà d'Ubuntu 16.04)
- Caméra USB UVC (les webcams standards fonctionnent sans pilote) ou caméra Intel RealSense
- Écran HDMI / DisplayPort-USB-C / eDP selon votre configuration
pip install opencv-python(ousudo apt install python3-opencvsous Linux)
Code complet
# vision_visage.py — capture USB + détection de visage OpenCV
import cv2
cap = cv2.VideoCapture(0) # 0 = première caméra UVC (Windows ou /dev/video0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
assert cap.isOpened, "Caméra introuvable : vérifier /dev/video0 ou le numéro de flux"
while True:
ok, frame = cap.read
if not ok:
break
gris = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
visages = cascade.detectMultiScale(gris, scaleFactor=1.2, minNeighbors=5)
for (x, y, w, h) in visages:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, f"visages: {len(visages)}", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
cv2.imshow("LattePanda Alpha - vision", frame)
if cv2.waitKey(1) & 0xFF == 27: # Échap pour quitter
break
cap.release
cv2.destroyAllWindows
Vérification attendue
La fenêtre s'ouvre en quelques secondes avec le flux 640×480 ; un rectangle vert entoure chaque visage détecté et le compteur s'affiche en rouge. Sous Linux, ls /dev/video* montre la caméra ; sous Windows, le gestionnaire de périphériques la liste sous « périphériques image ».
Erreurs fréquentes
VideoCapture(0)qui tombe sur une autre caméra (virtuelle, infrarouge) : essayerVideoCapture(1), ou sous Linux viser/dev/video1.- Oublier
cv2.waitKey(1): la fenêtre se fige et ne répond plus. - Caméras RealSense exigeant la bibliothèque librealsense spécifique en plus d'OpenCV.
- Sous Linux récent, paquets multimédias manquants si distribution minimaliste : installer python3-opencv via apt plutôt que pip si les dépendances vidéo manquent.
Autres tutoriels pour cette carte
- Faire clignoter une LED sur les broches du coprocesseur
- Bouton poussoir et console série avec le coprocesseur
- Premier script Python sur le PC x86 de la carte
- Pont série SoC ↔ MCU : le tunnel x86 vers ATmega32U4
- Lire un capteur analogique du MCU depuis Python (Firmata)
- Wi-Fi 802.11ac et Bluetooth 4.2 depuis le SoC
Exemples de code pour cette carte
clignotante.pyPythonbouton.pyPythonservo.pyPythonanalogique.pyPythonrespiration.pyPythonneopixel.pyPython