120 lines
3.3 KiB
Dart
120 lines
3.3 KiB
Dart
/// 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<OpenCVDetectedImpact> 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<OpenCVDetectedImpact> 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 [];
|
|
}
|
|
}
|