detectObjectsCropSaveImage method
Future<Image?>
detectObjectsCropSaveImage(
- dynamic imageFile
)
Implementation
Future<img.Image?> detectObjectsCropSaveImage(var imageFile) async {
/// method detect objects from iamge crop face and save to
/// location provided to function
List<Rect> rectArray = [];
List<Map<String, int>> objectMaps = [];
final inputImage = InputImage.fromFile(File(imageFile.path));
var objectDetector = GoogleMlKit.vision.objectDetector(
options: ObjectDetectorOptions(
mode: DetectionMode.single,
classifyObjects: true,
multipleObjects: true));
List<DetectedObject> objects =
await objectDetector.processImage(inputImage);
for (DetectedObject object in objects) {
for (Label label in object.labels) {
debugPrint('${label.text} ${label.confidence}');
}
}
img.Image? croppedObject;
if (objects.isNotEmpty) {
for (DetectedObject object in objects) {
rectArray.add(object.boundingBox);
int w = object.boundingBox.width.toInt().round();
int h = object.boundingBox.height.toInt().round();
int x = object.boundingBox.left.toInt().round();
int y = object.boundingBox.top.toInt().round();
Map<String, int> thisMap = {'x': x, 'y': y, 'w': w, 'h': h};
objectMaps.add(thisMap);
}
img.Image? originalImage =
img.decodeImage(File(imageFile.path).readAsBytesSync());
croppedObject = img.copyCrop(
originalImage!,
objectMaps[0]['x']!,
objectMaps[0]['y']!,
objectMaps[0]['w']!,
objectMaps[0]['h']!,
);
}
return croppedObject;
}