import 'dart:typed_data'; import 'package:opencv_dart/opencv_dart.dart' as cv; import '../../domain/entities/quality_status.dart'; import 'quality_checker.dart'; class ImageAnalysisService { static QualityStatus analyze({ required Uint8List bytes, required int width, required int height, }) { final mat = cv.Mat.fromList( height, width, cv.MatType.CV_8UC1, bytes, ); final result = QualityChecker.analyze(mat); mat.dispose(); // Re-calculate flags locally or trust QualityChecker. // QualityChecker returns QualityResult which has scores. // Logic for flags matches QualityChecker.analyze: final bool isSharp = result.blurScore > 100.0; final bool isLit = result.brightness > 40.0 && result.brightness < 220.0; final bool isPositionValid = result.isPositionValid; return QualityStatus( blurScore: result.blurScore, brightness: result.brightness, isCentered: result.isPositionValid, canCapture: result.passed, isFocusGood: isSharp, isLightingGood: isLit, isPositionGood: isPositionValid, ); } }