Files
rpa_vision_v3/core/capture
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00
..

Module de Capture d'Écran

Vue d'ensemble

Le module screen_capturer fournit une interface unifiée pour capturer des screenshots avec fallback automatique entre différentes bibliothèques.

Fonctionnalités

  • Capture d'écran rapide avec mss (méthode préférée)
  • Fallback automatique vers pyautogui si mss n'est pas disponible
  • Détection de la fenêtre active avec pygetwindow
  • Conversion automatique au format RGB numpy
  • Validation des images capturées
  • Gestion propre des ressources

Installation

# Installer les dépendances
cd rpa_vision_v3
./install_capture_deps.sh

# Ou manuellement
pip install mss>=9.0.0 pygetwindow>=0.0.9

Utilisation

Capture Simple

from core.capture.screen_capturer import ScreenCapturer

# Initialiser le capturer
capturer = ScreenCapturer()

# Capturer l'écran
img = capturer.capture()  # numpy array (H, W, 3) RGB

# Vérifier la capture
if img is not None:
    print(f"Image capturée: {img.shape}")

Détection de Fenêtre Active

# Obtenir les infos de la fenêtre active
window = capturer.get_active_window()

if window:
    print(f"Fenêtre: {window['title']}")
    print(f"Position: ({window['x']}, {window['y']})")
    print(f"Taille: {window['width']}x{window['height']}")

Intégration avec PIL

from PIL import Image

# Capturer et convertir en PIL Image
img_array = capturer.capture()
img_pil = Image.fromarray(img_array)

# Sauvegarder
img_pil.save("screenshot.png")

Architecture

ScreenCapturer
├── __init__()          # Initialise avec mss ou pyautogui
├── capture()           # Capture l'écran complet
├── get_active_window() # Détecte la fenêtre active
├── _capture_mss()      # Capture avec mss (rapide)
└── _capture_pyautogui()# Capture avec pyautogui (fallback)

Performance

Méthode Temps moyen Mémoire
mss ~10-20ms Faible
pyautogui ~50-100ms Moyenne

Recommandation: Utiliser mss pour les captures fréquentes.

Format de Sortie

  • Type: numpy.ndarray
  • Shape: (hauteur, largeur, 3)
  • Dtype: uint8
  • Ordre des canaux: RGB (pas BGR)
  • Valeurs: 0-255

Gestion d'Erreurs

try:
    img = capturer.capture()
    if img is None:
        print("Capture a échoué")
except Exception as e:
    print(f"Erreur: {e}")

Tests

# Tester le module
python examples/test_screen_capturer.py

# Résultat attendu:
# ✓ Méthode utilisée: mss
# ✓ Image capturée: (1080, 1920, 3)
# ✓ Format RGB valide
# ✓ Fenêtre active détectée

Dépendances

Obligatoires

  • numpy>=1.24.0

Optionnelles (au moins une requise)

  • mss>=9.0.0 (recommandé)
  • pyautogui>=0.9.54 (fallback)

Pour détection de fenêtre

  • pygetwindow>=0.0.9

Limitations

  1. Multi-écrans: Capture actuellement le moniteur principal uniquement
  2. Fenêtre active: Peut ne pas fonctionner sur tous les gestionnaires de fenêtres Linux
  3. Permissions: Peut nécessiter des permissions spéciales sur certains systèmes

Compatibilité

  • Linux (X11)
  • Linux (Wayland) - avec limitations
  • Windows
  • macOS

Troubleshooting

Erreur: "Neither mss nor pyautogui available"

pip install mss pyautogui

Erreur: "Captured image has invalid dimensions"

Vérifier que l'écran est bien détecté:

import mss
with mss.mss() as sct:
    print(sct.monitors)

Fenêtre active non détectée

Sur certains systèmes Linux, installer:

sudo apt-get install python3-xlib

Exemples Avancés

Capture d'une région spécifique

# TODO: À implémenter
# capturer.capture_region(x, y, width, height)

Capture avec timestamp

from datetime import datetime

img = capturer.capture()
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"screenshot_{timestamp}.png"

Image.fromarray(img).save(filename)

Roadmap

  • Support de capture de région spécifique
  • Support multi-écrans avec sélection
  • Cache de captures pour optimisation
  • Compression automatique des images
  • Support de formats de sortie alternatifs (JPEG, WebP)

Contribution

Pour améliorer ce module, voir rpa_vision_v3/docs/specs/tasks.md.