簡體   English   中英

人臉檢測器 ML-KIT 未檢測到人臉

[英]Face Detector ML-KIT is not detecting faces

我正在嘗試將 ML-KIT 庫與 CameraX 一起實現以檢測照片中的人臉。 在這種情況下,我將放置一張照片(采用 BitMap 格式)以供 function 分析,該 function 將檢測該照片中的人臉。

onCreate中初始化變量

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.fragment_photo)
    Log.d(TAG, "onCreateView")
    faceDetectorOptions = FaceDetectorOptions.Builder()
        .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)
        .setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
        .build()
    faceDetector = FaceDetection.getClient(faceDetectorOptions)
}

然后我將 BitMap 傳遞給 function detectFaces

override fun onCaptureSuccess(imageProxy: ImageProxy) {
                    val bitmap = imageProxy.image?.let { BitmapUtils().convertProxyImageInBitMap(it) }
                    bitmap?.let {
                        val photo = BitmapUtils().rotateBitmap(it, 90f)
                        detectFaces(photo, returnIntent)
                    }
                }

function 應該分析這張照片中是否有人臉

private fun detectFaces(image: Bitmap, intent: Intent){
    if (::faceDetectorOptions.isInitialized && ::faceDetector.isInitialized) {
        val inputImage = InputImage.fromBitmap(image, 0)
        val processImage = faceDetector.process(inputImage)
        processImage.addOnSuccessListener {
            if (it.size >= 1) {
                TODO()
            }
        }
        processImage.addOnFailureListener {
            it.printStackTrace()
        }
    }
}

但是addOnSuccessListener 回調總是返回 0 人臉的數量,即使人臉已經被拍到。

對於相同的圖像,您可以嘗試MLKit 示例應用程序並檢查其 camerax 活動是否能夠檢測到人臉。

其他一些事情:

  1. ML Kit 支持android.media.Image所以你不需要把它轉換成 Bitmap
  2. 仔細檢查 90 度是否是正確的參數,因為 ML Kit 人臉檢測器只能檢測直立的人臉

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM