Android 如何设置正确的setTargetResolution大小,以便使用对象检测分析图像?
我正在使用CameraX和对象检测来分析来自摄影机的帧,我很难设置正确的大小,以便制作一个显示当前正在检测的对象的覆盖图Android 如何设置正确的setTargetResolution大小,以便使用对象检测分析图像?,android,kotlin,object-detection,Android,Kotlin,Object Detection,我正在使用CameraX和对象检测来分析来自摄影机的帧,我很难设置正确的大小,以便制作一个显示当前正在检测的对象的覆盖图 val imageAnalysis = ImageAnalysis.Builder() .setTargetRotation(rotation) .setTargetResolution(size) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_
val imageAnalysis = ImageAnalysis.Builder()
.setTargetRotation(rotation)
.setTargetResolution(size)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also { it.setAnalyzer(cameraExecutor, imageAnalyzer) }
我有一个自定义视图(覆盖),我给了boundingBox
给我的矩形,我画了它
我尝试了一些东西,但结果不一致:
如果我这样做:val size=size(DisplayMetrics().heightPixels,DisplayMetrics().widthPixels)
- 该应用程序在所有版本的android中都运行良好,但当我尝试获取
rect并设置覆盖时,边界与屏幕中的对象不匹配边界框
val size=size(224224)
就像在一个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))
- 在这种情况下,安卓R的应用程序运行良好,但覆盖边界仍然关闭,而在安卓Q和Oreo等旧版本中,它会一次又一次地打开摄像头,就像出现故障一样,并冻结应用程序
val size=size(1280720)
就像ImageAnalysis文档中的示例一样
- 边框也关闭了,但该应用程序在所有Android版本中都运行良好
- 使用640x480进行了相同的尝试,得到了相同的结果
- 如果我使用480x640或720x1280,我会遇到使应用程序冻结的故障
val size=size(DisplayMetrics.widthPixels,DisplayMetrics().heightPixels)
- 这显示了与屏幕中的对象匹配的正确边框,但它只在Android R中工作,在旧版本中,我得到了与相机不断打开并冻结屏幕相同的闪光
很抱歉发了这么长的帖子,谢谢。你想要分辨率还是尺寸?如果我不清楚,很抱歉,我的问题是尺寸(…,…),我尝试了多种变体,但每个人都给我一个问题什么是
图像分析
?我认为您可以使用OpenCV,并使用x、y点绘制矩形。或者有一堆库和示例。这个问题可能更多地与预览和图像分析之间的纵横比差异有关,而不是与大小有关。MLKit的对象检测不需要高分辨率(如预览的分辨率)才能检测到相机帧中的对象。强制预览和ImageAnalysis具有相同的纵横比使坐标转换更容易执行。你可以看一个例子。很好,我在模拟器中试用了你的应用程序,它在Android API 29或更低版本中不断打开摄像头并冻结,在API 30中工作正常,你知道这是否是模拟器问题,在真实设备中工作正常吗?我的手机有API 30,工作正常。谢谢你想要分辨率还是尺寸?对不起,如果我不清楚,我的问题是尺寸(…,…),我尝试了多种变化,但每个人都给我一个问题什么是图像分析
?我认为您可以使用OpenCV,并使用x、y点绘制矩形。或者有一堆库和示例。这个问题可能更多地与预览和图像分析之间的纵横比差异有关,而不是与大小有关。MLKit的对象检测不需要高分辨率(如预览的分辨率)才能检测到相机帧中的对象。强制预览和ImageAnalysis具有相同的纵横比使坐标转换更容易执行。你可以看一个例子。很好,我在模拟器中试用了你的应用程序,它在Android API 29或更低版本中不断打开摄像头并冻结,在API 30中工作正常,你知道这是否是模拟器问题,在真实设备中工作正常吗?我的手机有API 30,工作正常。谢谢