还在为线上会议中强撑严肃、不敢露脸、怕冷场而焦虑?It’s Giving 是一款开源的 Python 工具,它能实时识别你做出的 14 种夸张面部/手势动作(比如“手捂脸”“侧目斜视”“疯狂转圈”),并自动将对应的表情包(支持 GIF 动图!)精准贴合在你头顶,随你移动缩放——然后通过虚拟摄像头输出给 Zoom、腾讯会议、Microsoft Teams、Discord 或 OBS,让全会议室看到你“无声胜有声”的戏精时刻。它不依赖美颜滤镜或预设贴纸,而是真正理解你的肢体语言,把线上会议变成一场可控又不失分寸的即兴喜剧。
核心功能
- 14 种高辨识度表情动作实时触发:从经典的“双手捂脸”“心形手势”,到网络热梗“侧目斜视”“对着墙说话”,再到魔性十足的“原地旋转”“张嘴惊呆”,每个动作都经过 MediaPipe 姿态估计算法专项优化,识别稳定、响应迅速,告别误触和延迟卡顿。
- 所见即所得的动态贴图系统:表情包不是静态水印,而是基于人脸关键点实时计算位置、大小与旋转角度,确保 GIF 动图始终“长在你头上”,连眨眼、转头、后退靠近镜头都不会错位,动画帧率与原始 GIF 完全一致,透明通道完美融合背景。
- 零门槛个性化定制:无需编程,只需把一张 PNG/JPEG/GIF 文件(如
heart.png或spin.gif)丢进assets/文件夹,同名替换即可生效;文件名支持前缀(如2024_flirty.webp仍被识别为 flirty 反应),连设计师都能 30 秒换肤。 - 自适应校准,适配千人千面:运行
its_giving_v2.py --calibrate仅需 7 秒,程序会记录你静止时的基准表情(闭眼、张嘴、皱眉等),后续所有反应阈值均基于你的五官特征动态调整,彻底解决“别人能触发、我做十次都不行”的兼容性痛点。 - 一键强制触发 & 调试辅助:按键盘
1–0、-、=等键可立即播放指定表情包(持续 2 秒),方便测试新素材;按d键开启 HUD(抬头显示),实时查看当前识别置信度、动作名称和帧率,调试效率翻倍。 - 跨平台虚拟摄像头直出:Windows/macOS/Linux 全支持——macOS 自动调用 OBS Studio 虚拟设备;Windows 推荐 OBS 官方安装器;Linux 用户一行命令
sudo modprobe v4l2loopback即可启用,生成的设备名(如OBS Virtual Camera)直接在 Zoom/Teams 设置中选择,即插即用。 - 安全离线,隐私可控:所有图像处理(人脸检测、姿态估计、表情匹配)均在本地完成,不上传任何视频流或图像数据;MediaPipe 模型缓存在本地,首次运行后无需联网,开会时断网也不影响使用。
- 扩展友好,支持新增动作:想加“托腮思考”“比耶胜利”?只需在
assets/放入thinking.png,再在代码中POSES列表顶部添加字符串"thinking"即可,顺序靠前优先匹配,避免与相似动作(如talking_to_wall)混淆。
技术亮点
- 精准轻量的多模态感知架构:项目未采用臃肿的深度学习大模型,而是组合使用 MediaPipe 的
FaceMesh(高精度 468 点人脸网格)、Pose(全身关键点)和Hands(手势识别)三套轻量化模型,协同判断复合动作(如“双手捂鼻”需同时满足手部位置+面部遮挡),在 CPU 上即可流畅运行(实测 i5-8250U 达 25 FPS)。 - 严苛锁定的依赖版本链:README 中特别强调不能“unpin 依赖”——因 MediaPipe 0.10.21 是目前唯一兼容 macOS M 系列芯片且不崩溃的稳定版,而该版本又与 NumPy 1.x、OpenCV 4.x 强绑定;作者已将
requirements.txt中三者精确锁定,规避了新版 MediaPipe(1.0+)在 macOS 上初始化即 abort、以及 OpenCV 5 引入 NumPy 2 导致的兼容雪崩,这种“反直觉但必要”的工程决策极大降低了用户踩坑概率。 - 面向真实场景的鲁棒性设计:支持 GIF 动画且自动读取原始帧延时(非硬编码 100ms),alpha 通道逐像素合成;对光照变化、侧脸角度、部分遮挡(戴眼镜/口罩)做了阈值容错;提供
--no-vcam纯预览模式,方便在无虚拟摄像头环境(如公司内网禁用 OBS)下仅做本地效果验证。
适合哪些人用
它不是给技术极客炫技的玩具,而是为以下真实人群解决具体沟通困境:
- 远程办公的创意工作者:UI 设计师在评审会上用
disgusted表情包替代“这个配色我不太喜欢”,用heart快速点赞同事提案,用spin表示“这个需求我需要转一圈再回来”,让反馈更鲜活、压力更小; - 高校教师与在线讲师:直播课中学生答错时弹出
time_out(裁判 T 手势)示意暂停,讲解难点时触发flirty(指尖点唇)制造记忆点,课间休息前播放dance动图带动气氛,提升学生注意力与参与感。
快速上手
全程无需编译,5 分钟完成部署:
- 确保已安装 Python 3.11 或 3.12;
- 克隆项目:
git clone https://github.com/gazijarin/itsgiving && cd itsgiving; - 创建并激活虚拟环境:
python3.12 -m venv venv && source venv/bin/activate(Windows 用venv\Scripts\activate); - 安装依赖:
pip install -r requirements.txt(首次运行会自动下载 ~15MB MediaPipe 模型); - 首次校准(关键!):
python its_giving_v2.py --calibrate,按提示保持静止 7 秒; - 启动主程序:
python its_giving_v2.py,终端将显示虚拟摄像头设备名(如OBS Virtual Camera); - 打开 Zoom/Teams → 设置 → 视频 → 选择该设备,即可在会议中实时生效。
同类对比 / 注意事项
- vs. OBS 插件类工具(如 FaceRig、Snap Camera):OBS 方案需手动配置滤镜链、调节图层遮罩,且多数仅支持静态贴纸;It’s Giving 内置完整动作逻辑与 GIF 动画引擎,开箱即用,资源占用更低(纯 Python + MediaPipe,无 Electron 壳)。
- vs. 商业软件(如 Zoom 内置虚拟背景/AR 效果):Zoom 效果依赖云端算力且不可自定义动作逻辑;It’s Giving 全本地运行,支持任意 GIF,动作触发条件完全开放可调,更适合追求表达自由的用户。
- 重要提醒:务必先启动 It’s Giving,再打开会议软件——Zoom/Teams 等应用启动时只扫描一次摄像头列表,晚于程序启动则无法发现新设备;首次使用建议先拉一位信任的同事进行 1:1 测试,熟悉各动作触发节奏,避免会议中“想捂脸却触发了跳舞”造成社死。
项目信息
Express yourself in meetings (with memes, of course).
812
Stars
93
Forks
Python
MIT
编程语言:Python|GitHub Star 数:812|开源协议:MIT|GitHub 项目地址
如果你厌倦了线上会议中僵硬的“微笑点头”,又不想用低质贴纸破坏专业感——It’s Giving 就是那个既尊重你的表达欲、又守住技术底线的聪明伙伴:它不替你说话,但它让你的每一个微表情,都值得被看见、被记住、被会心一笑。


