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

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

引言

  近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(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")


相关文章
|
4月前
|
人工智能 算法
你试过一秒钟出现在世界各地的感觉吗?使用一键人像抠图换背景,让你拥有任意门
准备人像与背景图,访问ModelScope一键抠图换背景工具。上传人像至位置1,背景至位置2。点击按钮稍候,AI快速生成新图,将人像无缝融合至新背景中。体验高效便捷,算法智能精准,边缘处理细腻无痕,支持多样背景选择,输出质量高,适合多种应用场景。
|
5月前
动态颤抖的眼睛效果404页面源码
动态颤抖的眼睛效果404页面源码, 源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
35 1
动态颤抖的眼睛效果404页面源码
|
4月前
|
图形学
小功能⭐️Unity动态更换天空盒、旋转天空盒
小功能⭐️Unity动态更换天空盒、旋转天空盒
|
4月前
|
图形学
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
小功能⭐️Unity 如何判断物体是否在摄像机视野内或外
|
5月前
动态人物抠图换背景 MediaPipe
动态人物抠图换背景 MediaPipe
|
前端开发 数据可视化 定位技术
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
424 0
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
|
机器学习/深度学习 人工智能 算法
给图片悄悄加上像素级水印:防止AI「抄袭」艺术作品的方法找到了
给图片悄悄加上像素级水印:防止AI「抄袭」艺术作品的方法找到了
234 0
Threejs专用天空盒素材,五种天空盒素材免费下载
Threejs专用天空盒素材,五种天空盒素材免费下载
1998 0
Threejs专用天空盒素材,五种天空盒素材免费下载
|
机器学习/深度学习 人工智能 vr&ar
几分钟让小孩的人物涂鸦「动起来」,Meta AI创建了一个奇妙的火柴人世界
几分钟让小孩的人物涂鸦「动起来」,Meta AI创建了一个奇妙的火柴人世界
620 0
几分钟让小孩的人物涂鸦「动起来」,Meta AI创建了一个奇妙的火柴人世界
|
安全 定位技术 计算机视觉
睫毛长度精准复刻!扫描面部数据,用特殊技术和3D打印制作人脸,“画皮”直呼内行
睫毛长度精准复刻!扫描面部数据,用特殊技术和3D打印制作人脸,“画皮”直呼内行
246 0
下一篇
DataWorks