如何使用TensorFlow Lite去除图像中的背景?

xqnpmsa8  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(167)

我正在Kotlin中创建一个Android应用程序,我想在其中实时删除人物肖像图像的背景。
(This代码旨在嵌入视频通话应用程序中,该应用程序的功能之一是在视频通话过程中删除用户的背景,以解决隐私问题。)
我已经从here下载了TensorFlow Lite的入门应用程序。它正在生成一个遮罩以及遮罩和捕获图像的叠加。我们如何使用该遮罩来截取人物并将背景替换为图库中的任何图像?
我过去从未使用过TensorFlow Lite,因此如有任何帮助,我将不胜感激。
先谢了。

u0sqgete

u0sqgete1#

TF Lite的项目运行良好,你可以从输入图像中得到生成的蒙版...然后你必须使用一些不同的东西来达到预期的效果。
我已经为你创建了一个helper函数来使用它并得到你想要的位图。从那里你可以继续并将它加载到一个ImageView中:

fun cropBitmapWithMask(original: Bitmap, mask: Bitmap?): Bitmap? {
        if (mask == null
        ) {
            return null
        }
        val w = original.width
        val h = original.height
        if (w <= 0 || h <= 0) {
            return null
        }
        val styled = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(styled)
        val paint =
            Paint(Paint.ANTI_ALIAS_FLAG)
        paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_IN)
        canvas.drawBitmap(original, 0f, 0f, null)
        canvas.drawBitmap(mask, 0f, 0f, paint)
        paint.xfermode = null
        return styled
    }

Tag me if you have more questions. 

Cheers

相关问题