android - Android Composable - 在图像分析器中绘图
问题描述
我是使用可组合框架创建 UI 的新手。但是,我试图从一组边界中绘制一个矩形。但是,尝试在图像分析器中绘图时出现以下错误:
@Composable invocations can only happen from the context of a @Composable function
关于如何解决这个问题的任何想法?
我的代码摘录:
@Composable
fun DisplayCamera() {
val lifecycleOwner = LocalLifecycleOwner.current
val context = LocalContext.current
val cameraProviderFuture = remember { ProcessCameraProvider.getInstance(context) }
AndroidView(modifier = Modifier.fillMaxSize(), factory = { _context ->
val previewView = PreviewView(_context)
val executor = ContextCompat.getMainExecutor(_context)
cameraProviderFuture.addListener({
val cameraProvider = cameraProviderFuture.get()
val preview = Preview.Builder().build().also {
it.setSurfaceProvider(previewView.surfaceProvider)
}
val cameraSelector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_FRONT)
.build()
val analyzer = ImageAnalysis.Builder()
.build()
.also {
it.setAnalyzer(executor, PersonDetector(_context) Analyzer@{ results ->
drawBounds(results)
Log.i("MM_Camera", "$results")
})
}
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview, analyzer)
}, executor)
previewView
})
}
填充代码为drawBounds
@Composable
fun drawBounds(results: List<Detection>) {
Canvas1(modifier = Modifier.fillMaxSize()) {
drawRect(Color.Blue, topLeft = Offset(0f, 0f), size = Size(this.size.width, 55f))
drawCircle(Color.Red, center = Offset(50f, 200f), radius = 40f)
}
}
解决方案
推荐阅读
- csv - 自动化:将数据从本地 CSV 推送到 Kusto db 表
- r - 在分组条形图的 X 轴上对变量的水平集进行排序
- javascript - 如何将 JavaScript 结果包含到播放器中?
- javascript - 有没有办法将值从一个键:值映射复制到另一个?
- mongodb - Mongodb如何过滤文档以在聚合框架的管道的下一阶段不传递空字段
- javascript - jsGanttImproved 中的 vAdditionalHeaders 不显示 JSON 对象中的值
- scala - java.io.NotSerializableException: org.apache.spark.sql.Column 当我使用带有 UDF 的条件创建新列时
- vagrant - 所有机器启动后的流浪供应
- python - Pandas / Python - 使用 stack() groupby() 和 apply() 的性能非常慢
- angular - Angular 4 Portal/CdkPortal 在新的子窗口中不起作用