使用FirebaseVisionObject

时间:2019-10-22 10:16:35

标签: android tensorflow-lite firebase-mlkit

我必须使用ML套件中的tflite自定义模型来检测带有边界框的对象。下面的代码在FirebaseVisionObject中标识带有边界框的对象,但是如何使用tflite自定义模型标识对象的边界框。

class ObjectDetectorProcessor(options: FirebaseVisionObjectDetectorOptions) :
VisionProcessorBase<List<FirebaseVisionObject>>() {

private val detector: FirebaseVisionObjectDetector

init {
    detector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)
}

override fun stop() {
    super.stop()
    try {
        detector.close()
    } catch (e: IOException) {
        Log.e(TAG, "Exception thrown while trying to close object detector: $e")
    }
}

override fun detectInImage(image: FirebaseVisionImage): Task<List<FirebaseVisionObject>> {
    return detector.processImage(image)
}

override fun onSuccess(
    originalCameraImage: Bitmap?,
    results: List<FirebaseVisionObject>,
    frameMetadata: FrameMetadata,
    graphicOverlay: GraphicOverlay
) {
    graphicOverlay.clear()
    if (originalCameraImage != null) {
        val imageGraphic = CameraImageGraphic(graphicOverlay, originalCameraImage)
        graphicOverlay.add(imageGraphic)
    }
    for (visionObject in results) {
        val objectGraphic = ObjectGraphic(graphicOverlay, visionObject)
        graphicOverlay.add(objectGraphic)
    }
    graphicOverlay.postInvalidate()
}

override fun onFailure(e: Exception) {
    Log.e(TAG, "Object detection failed $e")
}

companion object {
    private const val TAG = "ObjectDetectorProcessor"
}

}

0 个答案:

没有答案