热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享python人物视频背景替换实现虚拟空间穿梭

引言近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(ps:原视频小伙是在真实场景拍摄的)准备工作在实现该功能之前,我

引言

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

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()  

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

python人物视频背景替换实现虚拟空间穿梭

python人物视频背景替换实现虚拟空间穿梭

自定义图像背景板替换

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

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

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

3. 读取视频

4. 获取视频帧

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

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

7. 输出视频画面

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

python人物视频背景替换实现虚拟空间穿梭

背景图结合人物图:

python人物视频背景替换实现虚拟空间穿梭

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

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

以上就是python实现人物视频背景替换的详细内容,更多关于python视频背景替换的资料请关注<编程笔记>其它相关文章!

需要了解更多python教程分享python人物视频背景替换实现虚拟空间穿梭,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文介绍了如何通过配置 Android Studio 和 Gradle 来显著提高构建性能,涵盖内存分配优化、并行构建和性能分析等实用技巧。 ... [详细]
  • 华为USG基于源地址的多出口策略路由配置
    网络拓扑如下:组网情况:企业用户主要有技术部(VLAN10)和行政部(VLAN20),通过汇聚交换机连接到USG。企业分别通过两个不同运营商(ISP1和ISP2)连接到 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • This post discusses an issue encountered while using the @name annotation in documentation generation, specifically regarding nested class processing and unexpected output. ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
author-avatar
zengqingwei1220
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有