基于OpenCV的人员剔除
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
把不需要的人从背景中移除是一个有趣的任务。本期,我们一起探索如何使用带OpenCV从实时流中删除一个人。
01.准备工作
1. Python 3.xx(Python 3.7.4)
2. OpenCV(4.1.2版)
要从图像中删除一个对象,我们可能需要一个锚点作为起点,然后复制粘贴每个帧,类似对每个后续帧应用一个Mask。我们可以简单地从锚定框架中复制它,然后将其替换为要从中隐藏对象的当前框架来隐藏要隐藏的区域的坐标。
一个检测帧示例
要解决的第二个问题是找到一种方法来检测要删除的对象。OpenCV提供了一种简单的方法:基于支持向量机的“定向梯度直方图”检测器。它是必不可少的检测器,不是最快,不是最准确,不是最好的,但它可以正常工作。
02.工作流程
1. 实例化 HOGDescriptor
2. 获取视频的第一帧用作遮罩
3. 遍历每一帧,对于每个检测到的人,从第一帧开始用相应的“空”替换该区域
4. 保存输出
03.代码
按照前面描述的工作流程,代码保存在github中,见文末。
让我们测试一下!
像一个老板一样。手放在口袋里消失了!
但是,引用伊隆·马斯克(Elon Musk)的话:“仍有改善的空间”。实际上结果并不是那么精确,尤其是当离相机更近的时候。
在测试了这段代码之后,整个输出看起来有问题且不稳定。因此,需要找到一种方法来改进它:用第一帧替换每个检测到的人似乎是个好方法,因此我可能需要找到一种更好的方法来检测物体!
改进之处:
在搜索COCO的模型ZOO时,我们发现了一个实例分割模型,每幅图像的推理时间为0.07秒,这是最快的实例之一(可能不是最准确的)。
我们自定义了模型,需要安装所有需要的依赖,例如pytorch,torchvision和detectron2:
# install dependencies:
!pip install -U torch==1.4+cu100 torchvision==0.5+cu100 -f https://download.pytorch.org/whl/torch_stable.html
!pip install cython pyyaml==5.1
!pip install -U ‘git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
import torch, torchvision
以下代码和说明已在Google Colab实例上进行了测试,做出此选择是为了使此实验更易于复制,而不会因缺少依赖项,版本冲突和所有经常发生的无聊而苦恼。
然后我们需要安装Detectron2:
# install detectron2:
!git clone https://github.com/facebookresearch/detectron2 detectron2_repo
!pip install -e detectron2_repo
现在,我们可以继续导入所有需要的库并加载模型:
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # set threshold for this model
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(“COCO-InstanceSegmentation/mask_rcnn_R_50_DC5_1x.yaml”)
predictor = DefaultPredictor(cfg)
无法使用我们的predictor类进行推断,predictor需要在Tensors上返回一个需要转换为numpy数组的数组,然后可以像以前一样迭代该数组:
outputs = predictor(frame)
outputs = outputs[“instances”].pred_boxes
.to(‘cpu’)
.tensor
.numpy()
.astype(int)
让我们检查一下最终结果。
Detectron2 VS HOGDetector
从gif可以观察到Detectron2如何更准确地检测到一个人,但是,需要说的是,当然,它需要更多的“深度”配置(依赖有时会很麻烦)。但是,最终结果不言而喻!
代码链接:https://github.com/robertosannazzaro/person-removal-detectron2
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
基于OpenCV的人员剔除相关推荐
- 基于OpenCV的图像分割处理!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:姚童,Datawhale优秀学习者,华北电力大学 图像阈值化分割是 ...
- 在智能家庭用OpenCV实现人员检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 OpenCV计算机视觉库概述 OpenCV是一组计算机视觉(CV) ...
- 基于opencv实现模块化图像处理管道
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在这篇文章中,我们将学习如何为图像处理实现一个简单的模块化管道,我 ...
- 基于OpenCV的单目相机标定与三维定位
相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...
- opencv canny源码解析_行人检测 基于 OpenCV 的人体检测
原文链接 行人检测 基于 OpenCV 的人体检测 - 热分享hotdog29.com 在 2019年8月1日 上张贴 由 hotdog发表回复 行人检测 基于 OpenCV 的人体检测 我们都知道 ...
- Shi-tomasi角点检测python实现及基于opencv实现 (角点检测、非极大值抑制)
写在前面: 已经是七月中旬,黄宁然,你依然在这里. 参考文献镇楼: [1]龚思宇宙,基于平面模板的摄像机标定及相关技术研究 [2]汪洋,扫地机器人定位算法设计与嵌入式系统实现 [3]Denny#,[o ...
- python去复杂的水印_两种Python基于OpenCV的固定位置半透明水印去除方案
OpenCV基础 OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法 环境搭建 #python ...
- 基于Opencv的车距检测系统(源码&教程)
1.研究背景 对本车前方车辆的识别及距离检测是计算机视觉技术在智能网联汽车中的一个重要内容.要想在错综繁杂的交通环境中实现无人驾驶,对行车环境中其他车辆信息的获取是十分重要的.因此,对本车前方车辆的识 ...
- BRIEF描述子原理、 python源码实现及基于opencv实现
写在前面: 伴着<似夜流月>,已到七月下旬.黄宁然,看你看过的算法系列,就要完结了. 参考文献镇楼: [1]汪洋,扫地机器人定位算法设计与嵌入式系统实现 [2]徐征辉,基于BRIEF描述子 ...
最新文章
- 导致网速变慢的安全隐患
- Linux cal日历指令
- 使用SQLPLUS生成HTML报表
- python之Map函数
- 每天Leetcode 刷题 初级算法篇-数学问题-罗马数字转整数
- 重启路由器可以换IP吗
- SPSS26没有典型相关性分析怎么办
- JPA是什么?怎样开发JPA应用?
- Java Seckill Module:product details
- JAVA定时调度框架Quartz使用案例
- PLSQL代码调试Oracle dbms_utility返回错误
- 《辛雷学习方法》读书笔记——第二章 心态
- 2016——大数据版图
- WZOI-314石头剪子布
- 2021SCAU数据结构复习(实验1-实验3)
- LINUX:拷贝文件src/指定目录下,文件夹图标上有个叉.更改文件权限可解决该问题。
- 如何在iPhone之间共享您的Wi-Fi密码?
- 【微信小程序】shiro安全登录界面实现
- 华为自研系统鸿蒙很快就会搭载进手机吗?
- 建设工程法规专科【6】
热门文章
- 首发 | 旷视14篇CVPR 2019论文,都有哪些亮点?
- iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!
- 买不到回家的票,都是“抢票加速包”惹的祸?
- 李彦宏:简单搜索永远没有广告;安全是自动驾驶第一天条
- 不服来战!多伦多大学教授500美元挑战整个机器学习圈子
- 美团二面:Redis与MySQL双写一致性如何保证?
- Centos7搭建k8s环境教程,一次性成功,收藏了!
- HTTP/3 来了 !HTTP/2 还没怎么用起来呢,先一起扫个盲吧!
- Spring Boot+JWT+Shiro+MyBatisPlus实现Restful快速开发后端脚手架
- 12 个超燃的 IntelliJ IDEA 插件!