让背景一直变换_实现一个类似Zoom的摄像采集虚拟背景功能

本文介绍了如何利用opencv和nodejs结合bodypix实现类似Zoom的虚拟背景功能。通过opencv获取摄像头图像,传送给nodejs服务端,使用bodypix进行人像识别并生成蒙版,再将蒙版与虚拟背景合并,最终输出到界面,实现背景替换。在处理过程中,作者建议使用jpg格式以减少计算负担,并探讨了MobileNetV1和ResNet50两种算法的优缺点。此外,还提出了动态背景的实现方法,即使用视频作为背景源,通过分帧处理实现背景的动态变化。
摘要由CSDN通过智能技术生成

好久没写知乎了,现在音频集群被我弄的差不多了。

给自己一个任务,开始研究视频集群中的一些功能,实现美颜的方法其实有很多,基础的美颜算法其实网上有很多,只要不涉及到部位大小的拉伸和替换,只是换肤还是不难的。

腾讯会议和Zoom都有一个功能,就是虚拟背景。

实现效果类似下图:

2d6c477824be5f6fe6b24c35c6c53c39.png

可以让用户选择替换的自己想要背景,除去原始背景的画面。

主动接下了这个需求,其实我个人也对此挺有兴趣的。

这里的技术实现的核心,就是如何识别出在摄像头前面的人。

然后把人物扣取出来,再合并到一个虚拟背景中去。

说的容易,核心是怎么扣出人像?大家可以知道,在拍电影的时候,很多人可以在需要处理的画面中,添加绿幕(Green screen),用于工具中的抠图方便,但是现实中,我们的背景非常复杂,在实际使用中,不可能必须让用户去找一个绿幕。

那么怎么办呢?其实思路大家都是一样的,就是接触机器学习,通过对大量图形的训练,让程序自己可以识别出人型边框。

这里首推tensorflow。

但是这货有一个毛病,虽说它声称是可以跨平台的,而且按照官方文档有Windows安装说明,但是实际上搞得我好几天,一直有一个错误无法突破。在github上发起issue去问询,发现早就有好多人问过了,就是对windows的支持不足引起的,至今没什么好的办法。

于是在几天的尝试和毫无进展后,果断放弃。选择使用nodejs架设tensorflow。绕过跨平台的障碍!

虽然你可以用tensorflow做一个图像拟合的过程,但是费时费力,其实在这方面,谷歌早给你做好了,就是bodypix(bodypix简直就是一个神话!谷歌的贴心服务几乎把所有常用物品和人物模型识别都给你搞好了)。

客户端呢?借助opencv捕获摄像头进行图像的处理和合并。

实现过程思路如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值