/// Service de détection d'impacts utilisant OpenCV. /// /// NOTE: OpenCV est actuellement désactivé sur Windows en raison de problèmes /// de compilation. Ce fichier contient des stubs qui permettent au code de /// compiler sans OpenCV. Réactiver opencv_dart dans pubspec.yaml et /// décommenter le code ci-dessous quand le support sera corrigé. library; // import 'dart:math' as math; // import 'package:opencv_dart/opencv_dart.dart' as cv; /// Paramètres de détection d'impacts OpenCV class OpenCVDetectionSettings { /// Seuil Canny bas pour la détection de contours final double cannyThreshold1; /// Seuil Canny haut pour la détection de contours final double cannyThreshold2; /// Distance minimale entre les centres des cercles détectés final double minDist; /// Paramètre 1 de HoughCircles (seuil Canny interne) final double param1; /// Paramètre 2 de HoughCircles (seuil d'accumulation) final double param2; /// Rayon minimum des cercles en pixels final int minRadius; /// Rayon maximum des cercles en pixels final int maxRadius; /// Taille du flou gaussien (doit être impair) final int blurSize; /// Utiliser la détection de contours en plus de Hough final bool useContourDetection; /// Circularité minimale pour la détection par contours (0-1) final double minCircularity; /// Surface minimale des contours final double minContourArea; /// Surface maximale des contours final double maxContourArea; const OpenCVDetectionSettings({ this.cannyThreshold1 = 50, this.cannyThreshold2 = 150, this.minDist = 20, this.param1 = 100, this.param2 = 30, this.minRadius = 5, this.maxRadius = 50, this.blurSize = 5, this.useContourDetection = true, this.minCircularity = 0.6, this.minContourArea = 50, this.maxContourArea = 5000, }); } /// Résultat de détection d'impact class OpenCVDetectedImpact { /// Position X normalisée (0-1) final double x; /// Position Y normalisée (0-1) final double y; /// Rayon en pixels final double radius; /// Score de confiance (0-1) final double confidence; /// Méthode de détection utilisée final String method; const OpenCVDetectedImpact({ required this.x, required this.y, required this.radius, this.confidence = 1.0, this.method = 'unknown', }); } /// Service de détection d'impacts utilisant OpenCV /// /// NOTE: Actuellement désactivé - retourne des listes vides. /// OpenCV n'est pas disponible sur Windows pour le moment. class OpenCVImpactDetectionService { /// Détecte les impacts dans une image en utilisant OpenCV /// /// STUB: Retourne une liste vide car OpenCV est désactivé. List detectImpacts( String imagePath, { OpenCVDetectionSettings settings = const OpenCVDetectionSettings(), }) { print('OpenCV est désactivé - utilisation de la détection classique recommandée'); return []; } /// Détecte les impacts en utilisant une image de référence /// /// STUB: Retourne une liste vide car OpenCV est désactivé. List detectFromReferences( String imagePath, List<({double x, double y})> referencePoints, { double tolerance = 2.0, }) { print('OpenCV est désactivé - utilisation de la détection par références classique recommandée'); return []; } }