首页 > 解决方案 > 如何使用 TensorFlow Lite 从图像中删除背景?

问题描述

我正在Kotlin中创建一个 Android 应用程序,我想在其中实时从一个人的肖像图像中删除背景。

(此代码旨在嵌入视频通话应用程序中,该应用程序的功能之一是在视频通话期间出于隐私问题删除人的背景。)

我已经从这里下载了 TensorFlow Lite 的入门应用程序。它正在生成一个蒙版以及蒙版和捕获的图像的叠加。我们如何使用该蒙版截取人物并用画廊中的任何图像替换背景。
我过去没有使用 TensorFlow Lite 做过任何工作,因此我们将不胜感激。

提前致谢。

标签: androidtensorflowkotlincomputer-visiontensorflow-lite

解决方案


TF Lite 的项目工作正常,你从输入图像中得到生成的掩码......然后你必须使用不同的东西来达到预期的结果。只需查看PorterDuff.Mode

我为您创建了一个辅助函数来使用它并获取所需的位图。从那里您可以继续并将其加载到 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

推荐阅读