【问题标题】:Android ML-kit chaing together multiple tasksAndroid MLkit 将多个任务链接在一起
【发布时间】:2021-11-27 09:15:18
【问题描述】:

我正在尝试使用 ml-kit 运行多个进程,我已经搜索过了,我发现的唯一解决方案是连续执行所有任务(如何?)或使用 RXJava 和 zip实用程序,但这似乎与我需要的不匹配。

我已经尝试编写以下代码,但我不确定它有多好,这是一个好方法吗?

override fun analyze(image: ImageProxy) {
    val inputImage = InputImage.fromMediaImage(image.image!!, image.imageInfo.rotationDegrees)
    val tasks = mutableListOf<Task<*>>()
    val onComplete = { t: Task<*> ->
        tasks.remove(t)

        if (tasks.isEmpty()) {
            image.close()
        }
    }

    barcodeScanner?.process(inputImage)
        ?.addOnSuccessListener {
            // Do stuff with the result
        }
        ?.addOnCompleteListener(onComplete)
        ?.also {
            tasks.add(it)
        }
    imageLabeler?.process(inputImage)
        ?.addOnSuccessListener {
            // Do stuff with the result
        }
        ?.addOnCompleteListener(onComplete)
        ?.also {
            tasks.add(it)
        }
    faceDetector?.process(inputImage)
        ?.addOnSuccessListener {
            // Do stuff with the result
        }
        ?.addOnCompleteListener(onComplete)
        ?.also {
            tasks.add(it)
        }
}

【问题讨论】:

    标签: android google-mlkit


    【解决方案1】:

    您当前的方式将使不同的推理任务在一个后台线程中排队。如果你想要多线程,你可以使用 XxxOptions.Builder #setExecutor 为检测器分配不同的线程。 https://developers.google.com/android/reference/com/google/mlkit/vision/barcode/BarcodeScannerOptions.Builder#setExecutor(java.util.concurrent.Executor)

    【讨论】:

    • 你能提供更多细节吗?我将如何使用执行器内部分析回调中的图像?
    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 2016-06-16
    • 1970-01-01
    • 2020-02-08
    • 2020-07-12
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多