FaceDetectorOptions.setMinFaceSize() 不起作用
Posted
技术标签:
【中文标题】FaceDetectorOptions.setMinFaceSize() 不起作用【英文标题】:FaceDetectorOptions.setMinFaceSize() is not working 【发布时间】:2020-11-27 08:31:49 【问题描述】:目前我正在使用 ML Kit 在我的应用程序中检测人脸。 它工作,但有一个问题。我想在它上面设置最小的脸尺寸,但它似乎没有效果。无论人脸大小,它总是会检测到人脸。
这是我的代码:
private fun setupCamera(cameraProviderFuture: ListenableFuture<ProcessCameraProvider>, mainView: MainView)
val cameraProvider = cameraProviderFuture.get()
preview = Preview.Builder().build()
val cameraSelector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_FRONT).build()
val realTimeOpts = FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
.setMinFaceSize(0.5f)
.enableTracking()
.build()
detector = FaceDetection.getClient(realTimeOpts)
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.apply setAnalyzer(Executors.newSingleThreadExecutor(), FaceDetectAnalyzer(detector!!, mainView))
try
cameraProvider.unbindAll()
camera = cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, imageAnalysis, preview)
preview?.setSurfaceProvider(binding.pvCameraPreview.createSurfaceProvider())
catch (e: Exception)
Log.e(TAG, "Use case binding failed", e)
有人能给我点线索或建议吗?谢谢。
【问题讨论】:
【参考方案1】:确实如此,图片大小不是硬性限制,这就是我们将评论放在java doc的原因。
"这不是对人脸大小的硬性限制;检测器可能会发现比指定的人脸稍小。"
如果您只对较大的面孔感兴趣,则可以增加 minFaceSize。或者您可以对最终的尺寸进行过滤。通过增加 minFaceSize,性能将会得到提升。
【讨论】:
你的意思是只和性能有关吗?因为我试图将它设置为最大(1.0f),但它仍然无法正常工作。无论人脸有多小,它总是能检测到人脸。 是的,现在主要是为了提高性能。我们在扫描图像时使用它来决定块大小。它不能直接用于过滤掉人脸大小,我们可以改进。如果您确实想过滤掉小人脸,您可能需要使用返回边界框大小在应用程序大小中过滤掉。 我明白了。所以现在,我可以通过使用边界框大小的宽度来过滤它。谢谢。 @Shiyu 为什么不能在文档中解释它不能用于按大小过滤人脸?以上是关于FaceDetectorOptions.setMinFaceSize() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章