我正在使用CameraX和对象检测来分析来自相机的帧,并且我在设置正确的大小时遇到了问题,以便创建一个覆盖,以显示当前正在检测的对象。
val imageAnalysis = ImageAnalysis.Builder()
.setTargetRotation(rotation)
.setTargetResolution(size)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also { it.setAnalyzer(cameraExecutor, imageAnalyzer) }
我有一个CustomView(覆盖层),我给出了boundingBox
给我的Rect,我画了这个。
我尝试过一些事情,但结果不一致:
如果我做了:val size = Size(DisplayMetrics().heightPixels, DisplayMetrics().widthPixels)
boundingBox
rect并设置覆盖层时,边框与屏幕上的对象不匹配。如果我喜欢的话:val size = Size(224,224)
喜欢在一个android代码库中使用
这是来自codelabs github的:
// This sets the ideal size for the image to be analyse, CameraX will choose the
// the most suitable resolution which may not be exactly the same or hold the same
// aspect ratio
.setTargetResolution(Size(224, 224))
在本例中,
。
如果我这样做:val size = Size(1280, 720)
喜欢ImageAnalysis文档中的示例
versions
的故障。
我只能用val size = Size(DisplayMetrics.widthPixels, DisplayMetrics().heightPixels)
让它工作
相同的闪光。
第一张照片的边框在不正确的位置,第二张是它正确工作的时候。
如果有人对我做错了什么以及如何解决这个问题有任何想法,我会感谢你的帮助。很抱歉寄了这么长的邮件,谢谢。
发布于 2022-03-07 16:16:54
你必须从
导入android.util.Size
下面是代码片段
val imageAnalysis = ImageAnalysis
.Builder()
// RGBA output is needed.
.setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888)
.setTargetResolution(Size(1280,720))
*注1280为我的预览视图宽度,720为高度,纵横比应保持不变,因此可以添加如下变量
.setTargetResolution(Size(previewView.width, previewView.height))
https://stackoverflow.com/questions/62785832
复制相似问题