android - 如何使用 TensorFlow Lite 从图像中删除背景?
问题描述
我正在Kotlin中创建一个 Android 应用程序,我想在其中实时从一个人的肖像图像中删除背景。
(此代码旨在嵌入视频通话应用程序中,该应用程序的功能之一是在视频通话期间出于隐私问题删除人的背景。)
我已经从这里下载了 TensorFlow Lite 的入门应用程序。它正在生成一个蒙版以及蒙版和捕获的图像的叠加。我们如何使用该蒙版截取人物并用画廊中的任何图像替换背景。
我过去没有使用 TensorFlow 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
推荐阅读
- command-line - 如何使用 Windows 命令提示符增加多个现有文件的文件名?
- android-studio - 缺少,android.permission.ACCESS_FINE_LOCATION
- node.js - 部署 Nodejs 和 mongodb
- python - Python数据汇总和结构
- javascript - 在表格中使用 ng-repeat 未触发 ng-click 事件
- python - 如何使用 python 在 O(1) 时间内找到有多少整数落入范围 [a...b]?
- winforms - windows窗体面板上的随机坐标
- javascript - React Native - flex 内的短文本:1 个视图
- java - 不可转换的类型:无法将 android.view.View 转换为 androidx.webkit.WebViewCompat 我如何使用 androidx?
- ios - PushKit 委托方法 didReceiveIncomingPushWithPayload 在 iOS 13 及更高版本的设备中未在后台调用和终止状态