使用Python移除背景

我们生活在视频通话的时代。通过互联网,使用笔记本电脑或电脑自带的相机,我们把我们的生活广播给我们的同学、同事和家人。

但有时候,我们并不想广播我们自己的空间。我的办公室和其他许多办公室一样,常年杂乱无章。我身后的墙上还有一把吉他,这并不代表我很专业。

因此,Zoom和其他视频通话软件有一个隐藏背景的功能,通常把背景隐藏在你选择的图像后面。虽然大多数人不会考虑太多,但是确定由什么决定图像中前景和背景的实际任务并不容易。

前景检测

前景检测是计算机视觉领域最突出的应用之一。除了视频通话的例子,前景检测可以用于寻找和阅读图像中的文本,确定自动驾驶汽车中的障碍物,以及许多其他应用。

因此,许多复杂的方法被开发出来,以区分前景和背景。

OpenCV提供了几个“开箱即用”的解决方案;然而,在没有任何其他背景的情况下,这些都是黑盒,它们没有太多的学习机会。相反,我将使用一个定制的算法,它利用几个OpenCV模块来实现类似的结果。

  • OpenCV提供的“开箱即用”的解决方案:https://docs.opencv.org/master/d1/dc5/tutorial_background_subtraction.html

边缘检测和轮廓

我将演示的方法基于两个概念:边缘检测和轮廓。

边缘检测,顾名思义,就是试图在图像中找到对比线或边缘。这个关键的第一步是对图像进行预处理,以帮助区分任何物体。有几种边缘检测方法存在,其中,Canny方法是非常受欢迎的,并打包在OpenCV中。

  • Canny:https://en.wikipedia.org/wiki/Canny_edge_detector

一旦找到了边缘,寻找轮廓就变得更加容易和准确。在计算机视觉中,轮廓就是颜色或强度对比区域之间的连续边界线。不像边缘检测,寻找轮廓将在图像中发现突出的形状。

算法

如前所述,我将不会使用OpenCV中预先打包的背景移除器。相反,下面的流程图概括了我将使用的方法:

首先,我们将把图像转换成黑白。接下来,应用边缘检测,找到图像中的轮廓。对于前景来说,任何太大或太小的轮廓都将被移除。

其余的轮廓将被视为前景。这具有一定的直观意义&#

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值