fingerprint/lib/core/services/image_analysis_opencv.dart
Aastha Shrivastava 3132b7e8cd first commit
2026-01-17 12:54:01 +05:30

39 lines
1.1 KiB
Dart

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,
);
}
}