gpt4 book ai didi

android - 设置 imageAnalysis.setAnalyzer() 时编译错误

转载 作者:行者123 更新时间:2023-12-04 17:14:29 24 4
gpt4 key购买 nike

我正在创建一个工具来使用cameraX从预览中捕获每一帧(用于面部识别目的)

我发现使用 ImageAnalysis 是可行的方法。

直到我尝试按照建议使用代码:

val imageAnalysisConfig = ImageAnalysisConfig.Builder()
.setTargetResolution(Size(1280, 720))
.setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
.build()
val imageAnalysis = ImageAnalysis(imageAnalysisConfig)

imageAnalysis.setAnalyzer({ image: ImageProxy, rotationDegrees: Int ->
viewModel.onAnalyzeImage(image)
})

我在 setAnalyser 方法上得到以下编译错误:
None of the following function can be called with the arguments supplied
setAnalyser((command : Runnable!) -> Unit, (image: ImageProxy!, rotationDegrees: Int) -> Unit)

最佳答案

我今天也遇到了同样的问题,所以发现缺少一个参数Executor我们需要传递,否则会出现相同的编译错误。
正如我与 AsyncTasks 一起工作的那样在我的过去,我认识到在 AsyncTasks 中的多个线程中执行任务,我们需要使用它的静态方法executeOnExecutor()这需要 Executor作为它的参数,所以我使用了相同的参数,即我使用了AsyncTask.THREAD_POOL_EXECUTOR作为 setAnalyser() 中的第一个参数方法。它就像一个魅力!将此作为第一个参数后,您需要对之前的代码进行一些小的更改。
像这样

 imageAnalysis.setAnalyzer(AsyncTask.THREAD_POOL_EXECUTOR,
object : ImageAnalysis.Analyzer { // changes to be done in this line
override fun analyze(imageProxy: ImageProxy, rotationDegrees: Int) {
val image = FirebaseVisionImage.fromMediaImage(
imageProxy.image!!, getFirebaseRotation(rotationDegrees)
)

if (processingBarcode.get() ||
!lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
return
}
..................
.............
.......BLA BLA BLA
}
试试看,告诉我这种方法是否适用于您的用例。
编辑
如果你不喜欢 AsyncTask ,然后我找到了获取 Executor 的替代方法不使用 AsyncTask.THREAD_POOL_EXECUTOR 的实例.
您可以使用 Executors.newFixedThreadPool(n) , 得到 Executor实例。
这里,n 代表你想在线程池中创建的线程数。它取决于你的用例。
告诉我它是否对你有用。

关于android - 设置 imageAnalysis.setAnalyzer() 时编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com