Débutant
🧠 Fondamentaux
10 XP
0 personnes ont réussi
Extraire une region d'interet (ROI)
Quand un système de vidéosurveillance détecte un mouvement, il n'analyse pas l'image entière à chaque frame, ce serait bien trop lent. Il se concentre uniquement sur la zone où le mouvement a été repéré. Quand une application de floutage de visages traite une vidéo YouTube, elle extrait chaque visage détecté, le floute, puis le recolle à sa place. Cette zone ciblée s'appelle une ROI (Region of Interest, ou région d'intérêt en français).
C'est comme découper un article dans un journal. Tu prends tes ciseaux, tu découpes la zone qui t'intéresse, tu la colles ailleurs. Sauf qu'ici, tes ciseaux c'est du slicing NumPy.
En pratique, tu utiliserais le même slicing NumPy dans un vrai projet OpenCV. Il n'y a pas de fonction cv2 spéciale pour extraire une ROI, c'est du pur NumPy. Par contre, après avoir extrait une ROI, tu pourrais lui appliquer des opérations OpenCV (flou, détection, etc.) avant de la recoller.
Avec NumPy, extraire une ROI c'est du slicing 2D :
roi = image[y1:y2, x1:x2]
Attention : par défaut, le slicing NumPy donne une vue, pas une copie. Si tu modifies la vue, tu modifies l'original. Pour obtenir une vraie copie indépendante, utilise .copy().
Écris deux fonctions :
extraire_roi(image, y1, x1, y2, x2) qui renvoie une copie de la zone rectangulaire spécifiée.
coller_roi(image, roi, y, x) qui colle un array roi sur l'image à la position (y, x). La fonction renvoie l'image modifiée.
Exemple : img = np.zeros((100, 100, 3), dtype=np.uint8) img[10:30, 10:30] = [0, 0, 255] # un carré rouge roi = extraire_roi(img, 10, 10, 30, 30) roi.shape vaut (20, 20, 3) coller_roi(img, roi, 50, 50) # colle le carré rouge à une autre position
Ce que tu devrais voir sur ta machine : le carré rouge apparaît à deux endroits de l'image.