getCameraImagePredictionList method

Future<List<ResultObjectDetection>> getCameraImagePredictionList(
  1. CameraImage cameraImage, {
  2. int? rotation,
  3. double minimumScore = 0.5,
  4. double iOUThreshold = 0.5,
  5. int boxesLimit = 10,
  6. CameraPreProcessingMethod cameraPreProcessingMethod = CameraPreProcessingMethod.imageLib,
  7. PreProcessingMethod preProcessingMethod = PreProcessingMethod.imageLib,
})

Retrieves a list of ResultObjectDetection by predicting the objects in the given cameraImage. The rotation parameter specifies the rotation of the camera image. The optional parameters minimumScore, iOUThreshold, boxesLimit, cameraPreProcessingMethod, and preProcessingMethod allow customization of the prediction process.

Implementation

Future<List<ResultObjectDetection>> getCameraImagePredictionList(
    CameraImage cameraImage,
    {int? rotation,
    double minimumScore = 0.5,
    double iOUThreshold = 0.5,
    int boxesLimit = 10,
    CameraPreProcessingMethod cameraPreProcessingMethod =
        CameraPreProcessingMethod.imageLib,
    PreProcessingMethod preProcessingMethod =
        PreProcessingMethod.imageLib}) async {
  if (cameraPreProcessingMethod == CameraPreProcessingMethod.imageLib) {
    // Convert the camera image to bytes using ImageUtilsIsolate
    Uint8List? bytes =
        await ImageUtilsIsolate.convertCameraImageToBytes(cameraImage);
    if (bytes == null) {
      throw Exception("Unable to process image bytes");
    }

    // Get the image prediction list using the converted bytes
    return await getImagePredictionList(bytes,
        minimumScore: minimumScore,
        iOUThreshold: iOUThreshold,
        boxesLimit: boxesLimit,
        preProcessingMethod: preProcessingMethod);
  }
  // Get the image prediction list directly from the camera image planes
  return await getImagePredictionFromBytesList(
      cameraImage.planes.map((e) => e.bytes).toList(),
      cameraImage.width,
      cameraImage.height,
      minimumScore: minimumScore,
      iOUThreshold: iOUThreshold,
      boxesLimit: boxesLimit);
}