Un calculateur de distance intelligent utilisant YOLOv11 pour détecter et mesurer la distance des objets en temps réel à partir de vidéos, images ou flux CCTV.
- 🔍 Détection multi-objets : Détecte personnes, voitures, motos, vélos, bus, camions, etc.
- 📏 Calcul de distance : Calcule automatiquement la distance des objets détectés
- 🎨 Couleurs personnalisables : Chaque type d'objet a sa propre couleur
- 📹 Sources multiples : Supporte vidéos, images et flux CCTV/webcam
- ⚙️ Configuration flexible : Personnalisation facile via le fichier config.py
- 🚀 Interface interactive : Sélection simple de la source d'entrée
- Python (testé avec Python 3.12)
- pip
pip install -r requirements.txt
Merci de spécifier l'emplacement du modèle YOLO dans le fichier config.py
en définissant la variable YOLO_MODEL_PATH
. Par exemple :
YOLO_MODEL_PATH = "chemin/vers/votre/yolovX.pt"
Assurez-vous que le chemin pointe vers le fichier du modèle YOLOvX que vous souhaitez utiliser.
python yolo_distance.py
Le programme vous propose 3 options :
- URL CCTV/Webcam - Pour les flux en direct
- Fichier image - Pour analyser une image
- Fichier vidéo - Pour analyser une vidéo (Testé avec des vidéos locales)
- Images : Appuyez sur n'importe quelle touche pour fermer
- Vidéos/CCTV : Appuyez sur 'q' pour quitter
CCTV_URL = "votre_url_cctv"
IMAGE_FILE = "chemin/vers/votre/image.jpg"
VIDEO_FILE = "chemin/vers/votre/video.mp4"
CLASS_INFO = {
0: ("Person", 0.4), # Personne - 0.4m de largeur moyenne
2: ("Car", 1.8), # Voiture - 1.8m de largeur moyenne
3: ("Motorcycle", 0.8), # Moto - 0.8m de largeur moyenne
# ... autres classes
}
CLASS_COLORS = {
0: (0, 255, 0), # Vert pour les personnes
2: (0, 0, 255), # Rouge pour les voitures
3: (255, 255, 0), # Cyan pour les motos
# ... autres couleurs
}
Objet | ID | Couleur | Largeur moyenne |
---|---|---|---|
👤 Person | 0 | Vert | 0.4m |
🚴 Bicycle | 1 | Bleu | 0.6m |
🚗 Car | 2 | Rouge | 1.8m |
🏍️ Motorcycle | 3 | Cyan | 0.8m |
4 | Violet | 35.0m | |
🚌 Bus | 5 | Magenta | 2.5m |
🚂 Train | 6 | Orange | 3.0m |
🚛 Truck | 7 | Jaune | 2.4m |
🛥️ Boat | 8 | Bleu clair | 3.0m |
🖥️ Monitor | 62 | Blanc | 0.5m |
# Dans config.py
CLASS_INFO[15] = ("Cat", 0.3) # Chat avec largeur 0.3m
CLASS_COLORS[15] = (0, 100, 200) # Couleur orange
# Changer la largeur des voitures
CLASS_INFO[2] = ("Car", 2.0) # Nouvelle largeur 2.0m
# Changer la couleur des voitures
CLASS_COLORS[2] = (255, 100, 0) # Nouvelle couleur
yolov8_distance_calculator/
├── yolo_distance.py # Script principal
├── distance_calculator.py # Logique de calcul de distance
├── config.py # Configuration
├── requirements.txt # Dépendances
└── README.md # Documentation
La distance est calculée en utilisant la formule :
Distance = (Largeur_réelle × Distance_focale) / Largeur_perçue_en_pixels
Calculée automatiquement ou utilise une valeur par défaut si aucune source CCTV n'est disponible.
Format utilisé par OpenCV (Bleu, Vert, Rouge) :
- Rouge :
(0, 0, 255)
- Vert :
(0, 255, 0)
- Bleu :
(255, 0, 0)
- Cyan :
(255, 255, 0)
- Magenta :
(255, 0, 255)
- Jaune :
(0, 255, 255)
python yolo_distance.py
# Choisir option 2
# Entrer le chemin de votre image
python yolo_distance.py
# Choisir option 1
# Entrer 0 pour la webcam par défaut
python yolo_distance.py
# Choisir option 3
# Entrer le chemin de votre vidéo
opencv-python
- Traitement d'images et vidéosultralytics
- Modèles YOLOnumpy
- Calculs numériques
Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer de nouvelles fonctionnalités
- Améliorer la documentation
- Ajouter de nouvelles classes d'objets
- Ultralytics pour YOLO
- OpenCV pour le traitement d'images
- Merci à omukesh, auteur du projet original dont ce dépôt est un fork.
-
Ce projet a été réalisé en grande partie avec l'aide de GitHub Copilot dans Visual Studio Code en mode agent et avec le model Claude Sonnet 4, une intelligence artificielle d'assistance à la génération de code.
-
Je n'ai pas encore vérifié la logique de calcul de distance du projet d'origine dont j'ai réalisé le fork.