实现虚拟空间穿梭不是梦:人物视频背景替换

简介: 实现虚拟空间穿梭不是梦:人物视频背景替换

引言

  近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(PS:原视频小伙是在真实场景拍摄的)

准备工作

   在实现该功能之前,我们需要准备好python==3.7 然后执行:


复制代码

pip install mediapipe

方案一: PC端可以选择外界摄像头或者连接网络摄像头,最好挑选一个纯属的背景板作为视频画面背景(这样有利于任务分割);

方案二: 网上下载有人物活动的视频,然后用下载的视频替代连接摄像头。

   到这里我们基础物件已经搭建好了,本实验代码选择方案二,对下载视频分析,其shape=(740,640,3)。接下来我将带领大家实现三个版本的背景替换

纯RGB背景替换

   基础板:将人物提取出来,替换成设定好的纯色背景(可以通过RGB设定)。其基本流程如下: 1. 输入视频

2. 获取视频帧

3. 提取帧内人物图像

4. 设定背景RGB值

5. 创建同视频帧同shape的RGB图像

6. 结合背景图与人物图

7. 输出结合图

示例demo:

ini

复制代码

import cv2
import mediapipe as mp
import numpy as np
mp_drawing = mp.solutions.drawing_utils
mp_selfie_segmentation = mp.solutions.selfie_segmentation
BG_COLOR = (0, 0, 225) # red
cap = cv2.VideoCapture('111.mp4')
with mp_selfie_segmentation.SelfieSegmentation(
    model_selection=0) as selfie_segmentation:
  bg_image = None
  while cap.isOpened():
    success, image = cap.read()
    if not success:
      break
    image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)
    image.flags.writeable = False
    results = selfie_segmentation.process(image)
    image.flags.writeable = True
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    condition = np.stack(
      (results.segmentation_mask,) * 3, axis=-1) > 0.8
    if bg_image is None:
      bg_image = np.zeros(image.shape, dtype=np.uint8)
      bg_image[:] = BG_COLOR
      print(bg_image.shape)
    output_image = np.where(condition, image, bg_image)
    cv2.imshow('MediaPipe Selfie Segmentation', output_image)
    if cv2.waitKey(5) & 0xFF == 27:
      break
cap.release()

原视频节选帧&替换背景帧:

image.png

image.png

自定义图像背景板替换

  由于我们已知图像的shape,我们可以在网上挑选自己喜欢的背景图,然后调整背景图的shape,使其与视频图像保持一致。整体流程图下:

1. 下载选择喜欢的背景图像

2. 调整下载图像的shape=(740,604,3)

3. 读取视频

4. 获取视频帧

5. 获取视频帧内人物图像

6. 结合背景图和人物图像

7. 输出视频画面

修改图像大小并进行50%缩放后的背景图:

image.png

背景图结合人物图:

image.png

这里我的背景图选择的有些单调,也不是那么适合,望读者见谅! 代码部分修改:

ini

复制代码

bg_image = cv2.imread("BBB.jpg")


相关文章
|
移动开发 JavaScript 前端开发
白话 uni-app,细说 uni-app 和传统 H5 的区别
白话uni-app 本文适合对象: 已经通过uni-app官网对产品概念有了了解,看过uni-app的官方视频介绍 熟悉h5,但对小程序、vue不了解 传统的h5只有1端,即浏览器。而uni-app可跨7端,虽仍属前端,与传统h5有不同。
12174 0
|
2月前
|
存储 SQL 关系型数据库
AI时代,当 MySQL 遇见列式存储引擎 DuckDB
在AI浪潮席卷全球的今天,有人认为关系型数据库已走向黄昏,MySQL 的生命力正在被边缘化。但事实真的如此吗?AliSQL,作为 MySQL 的重要分支,自2010年诞生以来,始终默默支撑着阿里巴巴集团核心业务的高并发、高可用需求。它从未消失,只是沉寂太久。 2026年,AliSQL社区的一帮开发者们,开始为AliSQL注入创新的血液!这是他们的第一篇,系统阐述了MySQL深度融合DuckDB的重大技术实践。这不仅是对“MySQL 只擅长 TP”这一行业共识的突破性回应,更是一次兼具工程魄力与架构远见的创新。
AI时代,当 MySQL 遇见列式存储引擎 DuckDB
|
9月前
|
存储 Android开发 虚拟化
机器码修改工具插件,软件机器码一键修改工具,可过任何检测【仅供学习】
本文档主要讲解了机器码组成原理、核心Hook技术实现及反检测策略。首先分析现代软件机器码检测涉及的硬件特征,如硬盘卷序列号、网卡MAC地址等
|
10月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
1227 21
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
编解码 人工智能 API
通义万相2.1视频/图像模型新升级!可在阿里云百炼直接体验
通义万相2.1模型推出新特征,包括复杂人物运动的稳定展现、现实物理规律的逼真还原及中英文视频特效的绚丽呈现。通过自研的高效VAE和DiT架构,增强时空上下文建模能力,支持无限长1080P视频的高效编解码,并首次实现中文文字视频生成功能。升级后的通义万相荣登VBench榜单第一,提供电影级分镜效果、四格漫画故事速览及情侣头像创意定制等多种玩法,满足多样化的视觉创作需求。可直接在阿里云百炼平台调用API体验这些功能。
4703 0
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
982 1
|
设计模式 Java 数据库
|
分布式计算 安全 Hadoop
Hadoop安全性和数据保护机制
【8月更文第28天】随着大数据技术的普及,Hadoop已成为处理大规模数据集的核心技术之一。然而,随着数据价值的增加,数据安全问题变得越来越重要。本文将深入探讨Hadoop的安全模型以及如何实施访问控制、数据加密等措施来保障数据安全。
1186 0
|
机器学习/深度学习 人工智能 自然语言处理
模型训练数据-MinerU一款Pdf转Markdown软件
MinerU是由上海人工智能实验室OpenDataLab团队开发的开源智能数据提取工具,专长于复杂PDF文档的高效解析与提取。它能够将含有图片、公式、表格等多模态内容的PDF文档转化为Markdown格式,同时支持从网页和电子书中提取内容,显著提升了AI语料准备的效率。MinerU具备高精度的PDF模型解析工具链,能自动识别乱码,保留文档结构,并将公式转换为LaTeX格式,广泛适用于学术、财务、法律等领域。
2461 4

热门文章

最新文章