当前位置: 首页 > news >正文

动态人物抠图换背景 MediaPipe

pip下载 MediaPipe

pip install mediapipe -i 

手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部,手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。
由于运行手掌检测模型非常耗时,因此在视频或直播跑步模式下,手部特征点会在一帧中使用手部特征点模型定义的边界框,以便为后续帧定位手部区域。仅当手部特征点模型不再识别出手部的存在或未能跟踪画面中的手部时,手部特征点才会重新触发手掌检测模型。这样可以减少手动标志器触发手掌检测模型的次数。

姿态检测

import cv2
import mediapipe as mp
# 获取pose模块
mp_pose = mp.solutions.pose
# 绘图工具模块
mp_draw = mp.solutions.drawing_utils
a=mp_draw.DrawingSpec((255,0,0),-1,2)#绘制节点圆圈的大小颜色
b=mp_draw.DrawingSpec((0,0,255),4)#绘制线条的粗细和颜色
# 获取Pose对象
pose = mp_pose.Pose(static_image_mode=True)cv2.namedWindow("img", cv2.WINDOW_NORMAL)
cv2.resizeWindow("img", (800, 600))
img = cv2.imread("img.png")img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 使用Pose对象处理图像,得到姿态的关键点
results = pose.process(img_rgb)
pose_landmarks = results.pose_landmarks
if pose_landmarks:mp_draw.draw_landmarks(img, pose_landmarks, mp_pose.POSE_CONNECTIONS,a,b)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 效果图:

mp_draw.DrawingSpec() 用于定义绘图的样式,包括颜色、线条粗细、圆形半径等。以下是 mp_draw.DrawingSpec 的一些常用参数:

  • color:指定绘图的颜色,可以是一个整数表示的 BGR 颜色值,也可以是一个包含三个元素的列表或元组表示的 RGB 颜色值。

  • thickness:指定绘图的线条粗细,默认为 1。

  • circle_radius:指定绘图中圆形的半径,默认为 1。

mp_pose.Pose()的参数用于配置人体姿态估计的行为,以下是一些常用参数:

  • static_image_mode:表示输入的是静态图像还是连续帧视频。如果设置为True,则表示输入为静态图像;如果设置为False,则表示输入为连续帧视频。

  • model_complexity:表示人体姿态估计模型的复杂度。可以选择0、1或2,其中0表示速度最快但精度最低,1表示速度和精度平衡,2表示速度最慢但精度最高。

  • smooth_landmarks:表示是否平滑关键点。如果设置为True,则会对关键点进行平滑处理,使姿态估计更加流畅。

  • enable_segmentation:表示是否对人体进行抠图。如果设置为True,则会在输出中包含人体的分割掩码。

  • min_detection_confidence:表示检测置信度的阈值。只有当检测到的人体姿态的置信度高于该阈值时,才会被认为是有效的姿态估计。

  • min_tracking_confidence:表示跟踪置信度的阈值。在连续帧视频中,只有当跟踪到的人体姿态的置信度高于该阈值时,才会继续使用该姿态估计。

mp_draw.draw_landmarks()函数用于在图像上绘制手部关键点和连接,其参数如下:

  • image:要绘制关键点和连接的图像。

  • landmark_list:检测到的手部关键点坐标。

  • connections:要绘制的连接线,需要指定哪些关键点之间进行连接。

  • landmark_drawing_spec:关键点的绘制样式,包括颜色、粗细等。

  • connection_drawing_spec:连接线的绘制样式,包括颜色、粗细等。

姿态检测(3D)

import cv2
import mediapipe as mp
# 获取pose模块
mp_pose = mp.solutions.pose
# 绘图工具模块
mp_draw = mp.solutions.drawing_utils
# 获取Pose对象
pose = mp_pose.Pose(static_image_mode=True)img = cv2.imread("yj.jpg")img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 使用Pose对象处理图像,得到姿态的关键点
results = pose.process(img_rgb)
pose_landmarks = results.pose_world_landmarks
#pose_landmarks是一个包含多个关键点的数组或数据结构,每个关键点可能包含坐标信息(如 x、y、z 坐标)以及其他相关属性。这些关键点可以表示人体的关节、部位或其他特征点。
if pose_landmarks:mp_draw.plot_landmarks(pose_landmarks, mp_pose.POSE_CONNECTIONS)cv2.destroyAllWindows()

效果图:

mp_draw.plot_landmarks()函数用于在图像或视频帧上绘制姿态估计的关键点和连接。以下是该函数的参数说明:

  • landmarks:要绘制的关键点列表。

  • connections:要绘制的连接列表,指定哪些关键点之间进行连接。

  • landmark_drawing_spec:关键点的绘制样式,包括颜色、大小等。

  • connection_drawing_spec:连接线的绘制样式,包括颜色、粗细等。

 人体抠图换背景

import cv2
import mediapipe as mp
import numpy as np# 获取pose模块
mp_pose=mp.solutions.pose
# 绘图工具模块
mp_draw=mp.solutions.drawing_utils
# 获取Pose对象
pose=mp_pose.Pose(static_image_mode=True, enable_segmentation=True)# 获取背景,原图
bg=cv2.imread('bg.png')
im=cv2.imread('img.png')
cv2.imshow('bg',bg)
cv2.imshow('im',im)
# 将背景的size设置和原图size一致
w,h,c=im.shape
bg=cv2.resize(bg,(h,w))# 使用Pose对象处理图像,得到姿态的关键点
im_rgb=cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
result=pose.process(im_rgb)
# cv2.imshow('result',result)# segmentation_mask中的数据值是0.0-1.0,值越大,表示越接近是人
mask=result.segmentation_mask
cv2.imshow('mask',mask)#
# 将单通道的mask变成三通道
mask=np.stack((mask,mask,mask),-1)
# 大于0.5的才是人
mask=mask>0.5
img1=np.where(mask,im,bg)
cv2.imshow('im1',img1)cv2.waitKey(0)
cv2.destroyAllWindows()

效果嘎嘎棒 

pose.process(img_rgb)返回值的属性

  • pose_landmarks:这是一个包含人体姿态关键点的数组,每个关键点都有一个对应的坐标。这些关键点可以用于表示人体的关节位置,例如头部、肩膀、手臂、腿部等。通过分析这些关键点的位置和运动,可以实现人体姿态的识别、动作捕捉等功能。

  • pose_world_landmarks:与pose_landmarks类似,pose_world_landmarks也是一个关键点数组。不同的是,pose_world_landmarks中的关键点坐标是在真实世界坐标系中的位置,而不是图像坐标系中的位置。这意味着pose_world_landmarks可以提供更准确的人体姿态信息,适用于需要与真实世界进行交互的应用场景。

  • segmentation_masksegmentation_mask是姿态跟踪结果中的一个数组,它的大小与跟踪的图像相同。每个像素的值在0.0到1.0之间,其中较暗的值表示背景,较亮的值表示被跟踪的身体。通过分析segmentation_mask,可以将人体从背景中分离出来,实现人体的分割和提取。

相关文章:

动态人物抠图换背景 MediaPipe

pip下载 MediaPipe pip install mediapipe -i 手部特征点模型包包含一个手掌检测模型和一个手部特征点检测模型。手掌检测模型在输入图片中定位手部,手部特征点检测模型可识别手掌检测模型定义的被剪裁手掌图片上的特定手部特征点。 由于运行手掌检测模型非常耗时&…...

Vue3 vite使用postcss-px-to-viewport(适配vant)

Vue3 vite使用postcss-px-to-viewport(适配vant) 安装vite.config.js配置 安装 npm install postcss-px-to-viewport-8-plugin -Dvite.config.js配置 import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from …...

MCU复位时GPIO是什么状态?

大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启,至此有经验的工程师就会经常关心一个问题,MCU复位时GPIO是什么状态?什么电路需要外部加上下拉? MCU从上电到启动,实际可分为复位前和复位后、初始…...

领先GPT-4o:Anthropic 推出新一代模型 Claude 3.5 Sonnet|TodayAI

Anthropic,全球领先的人工智能实验室之一,近日发布了其最新的人工智能模型——Claude 3.5 Sonnet。该模型不仅速度更快,成本更低,而且在多个关键任务上的表现超过了其前代模型 Claude 3 Opus。 更强的视觉功能与幽默感 Claude 3…...

使用AES,前端加密,后端解密,spring工具类了

学习python的时候,看到很多会对参数进行加密,于是好奇心驱使下,让我去了解了下AES加密如何在java中实现。 首先 npm install crypto-js 然后在你的方法中,给你们前端源码看看,因为我用的ruoyi框架做的实验&#xff…...

通过Spring-Data-Redis操作Redis

目录 一、搭建环境 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;自定义模板序列器 &#xff08;3&#xff09;编写配置文件 &#xff08;4&#xff09;操作方法 二、测试 一、搭建环境 &#xff08;1&#xff09;引入依赖 <dependencies><dep…...

自动驾驶ADAS

1 ToF摄像头分类 1.1 ToF原理 类似雷达测距&#xff0c;生成3D点云&#xff0c;或者叫3D贴图。ToF相机的分辨率一般在3万像素左右。ToF距离计算公式如图所示。 Figure 1-1 ToF距离计算公式 D&#xff1a;距离 c&#xff1a;光速 PHI&#xff1a;相位差 fmod&#xff1a;调制频率…...

Python+Pytest+Allure+Yaml接口自动化测试框架详解

PythonPytestAllureYaml接口自动化测试框架详解 编撰人&#xff1a;CesareCheung 更新时间&#xff1a;2024.06.20 一、技术栈 PythonPytestAllureYaml 版本要求&#xff1a;Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 1、安装python3.7&#xff0c;并配置…...

python turtle 001画两只小狗

效果图&#xff1a; 代码&#xff1a; pythonturtle001画两只小狗资源-CSDN文库 # 作者V w1933423import turtle # 导入turtle模块def draw_dogs():turtle.setup(800, 800) # 设置画布大小为800x800p turtle.Pen() # 创建一个画笔对象p.pensize(14) # 设置画笔大小为14p.…...

『亚马逊云科技产品测评』程序员最值得拥有的第一台专属服务器 “亚马逊EC2实例“

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 引言 自2006年8月9日&#xff0c;在搜索引擎大会&#xff08;SES San Jo…...

python 趣味习题_递归函数(炸弹迷宫路径计算)

@[toc] python 学习中,常会遇到一些百思不得其解的难题,但有时“灵光一现”找准方法,难题便会迎刃而解。 本专栏旨在记录本人解决问题的思考方法,及实现过程。有更好方法或对程序执行有疑问的伙伴,可在评论区留言,共同讨论。 题目要求 题目描述:在一串连续的迷宫(房间…...

免费翻译API及使用指南——百度、腾讯

目录 一、百度翻译API 二、腾讯翻译API 一、百度翻译API 百度翻译API接口免费翻译额度&#xff1a;标准版&#xff08;5万字符免费/每月&#xff09;、高级版&#xff08;100万字符免费/每月-需个人认证&#xff0c;基本都能通过&#xff09;、尊享版&#xff08;200万字符免…...

深度测试中的隐藏面消除技术

by STANCH 标签&#xff1a;#计算机图形学 #深度测试 #深度测试 #隐藏面消除 1.概述 根据我们的日常经验&#xff0c;近处的物体会挡住后面的物体&#xff0c;在三维场景中通常通过深度缓冲来实现这样的效果。深度缓冲记录着屏幕对应的每个像素的深度值。模型一开始所在的局部…...

oracle merge的使用

Oracle中的MERGE语句是一个非常强大的工具&#xff0c;它允许用户在一个SQL语句中同时执行INSERT和UPDATE操作。以下是关于Oracle MERGE语句的详细使用说明&#xff1a; 1. 基本语法 MERGE INTO target_table USING source_table ON (merge_condition) WHEN MATCHED THEN …...

《数字图像处理》实验报告四

一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像&#xff1b;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波&#xff0c;并观察其不同&#xff1b;paddedsize&#xff0c;fft2&#xff08;x,m,n&#xff09; 由 sobel 空间滤波算子生成相应的频率…...

算法04 模拟算法之一维数组相关内容详解【C++实现】

大家好&#xff0c;我是bigbigli&#xff0c;模拟算法我们将分为几个章节来讲&#xff0c;今天我们只看一维数组相关的题目 目录 模拟的概念 训练&#xff1a;开关灯 解析 参考代码 训练&#xff1a;数组变化 解析 参考代码 训练&#xff1a;折叠游戏 解析 参考代码 …...

【技术解码】百数SRM:如何助力企业快速优化供应链管理?

SRM应用是企业优化供应链管理的重要工具&#xff0c;它帮助企业全面管理供应商关系&#xff0c;从评估、选择到协同合作和绩效监控&#xff0c;确保供应链的稳定性和效率。 对于企业来说&#xff0c;通过全面管理供应商关系&#xff0c;可以降低采购风险&#xff0c;提升产品质…...

想要用tween实现相机的移动,three.js渲染的canvas画布上相机位置一点没动,如何解决??

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…...

SQL连接与筛选:解析left join on和where的区别及典型案例分析

文章目录 前言数据库在运行时的执行顺序一、left join on和where条件的定义和作用left join on条件where条件 二、left join on和where条件的区别原理不同left join原理&#xff1a;where原理&#xff1a; 应用场景不同执行顺序不同&#xff08;作用阶段不同&#xff09;结果集…...

oliva-bruteforce-luks

olivaeasyLUKS v2破解、bruteforce-luks工具使用、cryptsetup使用、cap_dac_read_searcheip、mysql使用 主机发现 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo netdiscover -i eth0 -r 192.168.44.148/24服务扫描 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo nmap -sV -…...

千问3.5-2B在VSCode中的集成应用:基于CodeX的智能编程助手搭建

千问3.5-2B在VSCode中的集成应用&#xff1a;基于CodeX的智能编程助手搭建 1. 引言 作为一名开发者&#xff0c;你是否经常在编码过程中遇到这些问题&#xff1a;记不清某个API的具体用法&#xff1f;需要快速生成重复性代码片段&#xff1f;遇到报错信息却找不到清晰的解释&…...

Endnote与WPS高效协作:自动与手动关联全攻略

1. Endnote与WPS关联的必要性 对于科研人员和学术写作者来说&#xff0c;文献管理是日常工作中不可或缺的一部分。Endnote作为一款专业的文献管理软件&#xff0c;能够帮助我们高效地整理、引用和分享文献资料。而WPS Office则是国内广泛使用的办公软件&#xff0c;许多用户习惯…...

Win11虚拟内存配置全解析:从临时页面文件到永久解决方案(含DISM命令详解)

Win11虚拟内存深度优化指南&#xff1a;从原理到实战的完整解决方案 每次开机看到那个烦人的"页面文件配置问题"提示&#xff0c;是不是让你感到困惑又无奈&#xff1f;作为Windows系统内存管理的关键组件&#xff0c;虚拟内存的配置直接影响着系统性能和稳定性。本文…...

像素剧本圣殿一文详解:复古未来像素美学×专业剧本格式输出规范

像素剧本圣殿一文详解&#xff1a;复古未来像素美学专业剧本格式输出规范 1. 工具概览与核心价值 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款专为影视、游戏编剧设计的AI创作工具。基于Qwen2.5-14B-Instruct大模型深度微调&#xff0c;它巧妙融合了8-Bi…...

Graphormer在计算毒理学中的应用:预测hERG通道抑制活性的完整建模流程

Graphormer在计算毒理学中的应用&#xff1a;预测hERG通道抑制活性的完整建模流程 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模型在OGB、PCQM4M等分子…...

VISA 标准深度剖析:寄存器基控制规范与函数接口研究

VISA 标准深度剖析:寄存器基控制规范与函数接口研究 VISA(Virtual Instrument Software Architecture)是仪器控制领域的标准 API,它为不同总线(GPIB、USB、LAN、PXI 等)提供了统一的编程接口。本文将 VISA 函数按功能分为 8 大类,并逐一解析其作用、核心函数及使用场景…...

中兴光猫配置解密工具:突破运营商限制,掌握家庭网络自主权

中兴光猫配置解密工具&#xff1a;突破运营商限制&#xff0c;掌握家庭网络自主权 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder 在家庭网络管理中&#xff0c;你是否曾因…...

如何通过炉石传说自动化工具实现游戏效率提升?

如何通过炉石传说自动化工具实现游戏效率提升&#xff1f; 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Scrip…...

高频电路布线十大实用技巧与EMC解决方案

1. 高频电路布线的基本概念与挑战高频电路通常指工作频率达到或超过45MHz~50MHz的数字逻辑电路&#xff0c;当这类电路占整个电子系统1/3以上比重时&#xff0c;就必须考虑高频特性带来的设计挑战。我在实际项目中多次遇到这样的场景&#xff1a;一个原本在低频下工作良好的电路…...

别再手动改请求头了!用BurpSuite插件5分钟搞定自动化添加(附完整Java代码)

解放双手&#xff1a;用BurpSuite插件实现HTTP请求头自动化管理 每次安全测试时&#xff0c;你是否也厌倦了反复点击"拦截"按钮、手动添加X-Debug-Header或修改User-Agent&#xff1f;作为一名长期与BurpSuite打交道的安全工程师&#xff0c;我深知这种重复性操作不仅…...