使用Firebase ML Vision Face Model从Bitmap中裁剪出Face

时间:2018-10-27 05:36:55

标签: android kotlin face-detection firebase-mlkit

我已经实现了Firebase ML Vision Face Model及其工作正常。我正在从face.getContour(FirebaseVisionFaceContour.FACE).points

创建路径

这是我的代码

val faceContourPoints: List<FirebaseVisionPoint> = face.getContour(FirebaseVisionFaceContour.FACE).points ?: ArrayList()
val path = Path()

for (i in 1..(faceContourPoints.size - 1)) {
    val oldPoint = faceContourPoints.get(i - 1)
    val currPoint = faceContourPoints.get(i)
    path.moveTo(oldPoint.x, oldPoint.y)
    path.lineTo(currPoint.x, currPoint.y)
}
path.close()                    
shapeCrop(editedBitmap, path)

在我的shapeCrop函数中,我从this链接获取了参考,并且在我画圆时它起作用了,但是它不符合我的路径。正在清除所有内容。 这是我的shapeCrop()函数-

fun shapeCrop(src:Bitmap, path: Path){
    val output = Bitmap.createBitmap(src.width, src.height, Bitmap.Config.ARGB_8888)
    val canvas = Canvas(output)
    val paint = Paint(Paint.ANTI_ALIAS_FLAG)
    paint.color = -0x1000000

    canvas.drawPath(path, paint)
    paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN)

    canvas.drawBitmap(src, 0f, 0f, paint)
    imageView.setImageBitmap(output)
}

我也尝试过使用this stackoverflow答案中的一种解决方案,但是当我画一个圆时,它仍然可以工作,但是当我绘制路径时,什至没有清除位图,都没有任何反应。

我确定我的位图很好,可能是我的路径有问题。

0 个答案:

没有答案