opencv 轮廓放大_使用OpenCV和Python构建自己的车辆检测模型
总览
- 对智慧城市的想法感到兴奋吗? 您会喜欢本教程,内容是构建自己的车辆检测系统。
- 首先,我们将了解如何在视频中检测运动物体,然后再进入实践部分。
介绍
我喜欢智慧城市的想法。关于自动化智能能源系统,电网,一键式访问端口的想法–这是一个令人着迷的概念!老实说,对于数据科学家来说,这是一个梦想,我很高兴世界各地的许多城市都在朝着变得更加智能化的方向迈进。
智慧城市的核心组件之一是自动交通管理。 这让我开始思考是否可以使用数据科学知识来构建可以在智能交通管理中发挥作用的车辆检测模型?
考虑一下–如果您可以将车辆检测系统集成到交通信号灯摄像头中,则可以轻松地同时跟踪许多有用的东西:
- 白天在交通路口有多少辆车?
- 交通事故发生时间?
- 什么样的车辆在交叉路口行驶(重型车辆,小汽车等)?
- 有没有一种方法可以优化交通量并通过其他街道进行分流
等等。 应用无止境!
我们人类可以轻松地从复杂场景中瞬间检测和识别物体。 但是,将思维过程转化为机器,需要我们学习使用计算机视觉算法进行对象检测的技术。
因此在本文中,我们将构建一个自动车辆检测器和计数器模型。下面是实际效果图
实时车辆检测https://www.zhihu.com/video/1239875427575193600
激动吗?那就让我们开始吧!
注意:如果你是深度学习和计算机视觉新手? 以下是两门热门课程,可以启动您的深度学习之旅:
机器学习和数据科学课程-Analytics Vidhyacourses.analyticsvidhya.com
Certified Computer Vision with Deep Learning Coursecourses.analyticsvidhya.com
目录
- 视频检测运动对象背后的理论
- 在视频中检测对象的真实世界用例
- 您应该了解的有关视频对象检测的基本概念
- 帧差异
- 图像阈值
- 轮廓查找
- 图像膨胀
- 使用OpenCV构建车辆检测系统
检测视频中的运动对象的想法
目标检测是计算机视觉中一个引人入胜的领域。当我们处理视频数据时,它达到了一个全新的水平。复杂性提高了一个等级,但是带来的成就奖励也是如此!
我们可以使用目标检测算法执行超有用的高价值任务,例如监视,交通管理,打击犯罪等。 这是一个展示想法的GIF:
我们可以在目标检测中执行许多子任务,例如计算目标数目,找到目标的相对大小或找到目标之间的相对距离。 所有这些子任务都很重要,因为它们有助于解决一些最棘手的现实问题。
如果您想从头开始学习目标检测算法,建议您参考以下教程:
A Step-by-Step Introduction to the Basic Object Detection Algorithms (Part 1)www.analyticsvidhya.com
A Friendly Introduction to Real-Time Object Detection using the Powerful SlimYOLOv3 Frameworkwww.analyticsvidhya.com
object detection Archives - Analytics Vidhyawww.analyticsvidhya.com
让我们看一下一些令人兴奋的现实世界中的目标检测实例吧。
视频中对象检测的实际用例
如今,视频目标检测已广泛应用于各个行业。使用范围从视频监视到体育广播再到机器人导航。
这是个好消息-涉及视频目标检测和跟踪的未来用例时,可能性无穷无尽。 在这里,我列出了一些有趣的应用程序:
- 人群计数
- 车辆牌照检测和识别
- 运动比赛中的球跟踪
- 机器人
- 交通管理(我们将在本文中看到的一个例子)
您应该了解的有关视频目标检测的基本概念
在开始构建视频检测系统之前,您应该了解一些关键概念。一旦熟悉了这些基本概念,就可以针对您选择的任何用例构建自己的检测系统。
那么,您该如何检测视频中的运动物体?
我们的目标是捕获运动对象的坐标并在视频中突出显示该对象。 考虑以下视频中的这一帧:
我们希望模型能够检测视频中的运动对象,如上图所示。 检测到正在行驶的汽车,并在汽车周围创建一个边界框。
有多种技术可以解决此问题。 您可以训练用于目标检测的深度学习模型,也可以选择一个预先训练的模型并在数据上进行微调。但是,这些是有监督的学习方法,它们需要标记的数据来训练目标检测模型。
在本文中,我们将重点介绍视频中对象检测的无监督方式,即不使用任何标记数据的目标检测。我们将使用帧差分技术。 让我们了解它的工作原理!
帧差分
视频是一组按正确顺序堆叠在一起的帧。 因此,当我们看到一个对象在视频中移动时,这意味着该对象在每个连续帧中都位于不同的位置。
如果我们假设除了那个物体,没有其他物体在一对连续的帧中移动,那么第一帧与第二帧的像素差异将突出显示移动物体的像素。 现在,我们将获得运动对象的像素和坐标。 大致来说,这就是帧差分方法的工作方式。
让我们举个例子。 考虑视频中的以下两帧:
您能发现两帧之间的差异吗?
是的–握笔的手的位置从第1帧更改为第2帧。其余目标完全没有移动。 因此,正如我前面提到的,要定位运动对象,我们将执行帧差分。 结果将如下所示:
您可以看到最初出现手的突出显示区域或白色区域。 除此之外,记事本还沿其边缘突出了一点。 这可能是由于手的运动引起的照明变化。 建议去除对静止物体的不必要检测。 因此,我们需要在帧上执行某些图像预处理步骤。
图像阈值
在该方法中,基于阈值为灰度图像的像素值分配代表黑色和白色的两个值之一。 因此,如果像素的值大于阈值,则为其分配一个值,否则为其分配另一个值。
在我们的情况下,我们将在上一步中对差异帧的输出图像应用图像阈值处理:
寻找轮廓
轮廓用于识别图像中具有相同颜色或强度的区域的形状。 轮廓就像是感兴趣区域周围的边界。 因此,如果在阈值化步骤之后在图像上应用轮廓,则会得到运动目标的轮廓
白色区域被灰色边界包围,仅是轮廓。 我们可以轻松获得这些轮廓的坐标。 这意味着我们可以获取突出显示区域的位置。
请注意,存在多个突出显示的区域,每个区域都被轮廓包围。 在我们的情况下,具有最大面积的轮廓是所需区域。 因此,最好具有尽可能少的轮廓。
在上图中,白色区域仍然存在一些不必要的碎片。 仍有改进的余地。 想法是合并附近的白色区域以减少轮廓,为此,我们可以使用另一种称为图像扩张的技术。
图像扩张
这是对图像的卷积运算,其中内核(矩阵)在整个图像上传递。 只是为了给您直观感,右边的图像是左边图像的放大版:
因此,让我们对图像进行图像放大,然后再次找到轮廓:
事实证明,很多碎片区域相互融合。 现在,我们可以再次在该图像中找到轮廓:
在这里,我们只有四个候选轮廓,可以从中选择面积最大的轮廓。 您还可以在原始框架上绘制这些轮廓,以查看轮廓围绕移动对象的程度:
[具体实现代码下载地址](https://pan.baidu.com/s/1oUYOL8CdQ1bt31_IKcLN6g)
提取码:6ndc
[参考链接地址](Build your own Vehicle Detection Model using OpenCV and Python)
opencv 轮廓放大_使用OpenCV和Python构建自己的车辆检测模型相关推荐
- opencv 轮廓放大_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...
title: [python]基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析 type: categories copyright: true categories ...
- 车辆销售系统用例_使用OpenCV和Python构建自己的车辆检测模型
总览 对智慧城市的想法感到兴奋吗? 您会喜欢本教程,内容是构建自己的车辆检测系统. 首先,我们将了解如何在视频中检测运动物体,然后再进入实践部分. 介绍 我喜欢智慧城市的想法.关于自动化智能能源系统, ...
- opencv python 多帧降噪算法_使用OpenCV和Python构建自己的车辆检测模型
介绍 我喜欢智慧城市的理念.自动智能能源系统.电网.一键接入端口的想法等等.这是一个令人着迷的概念!老实说,这是一个数据科学家的梦想,我很高兴世界上很多城市都在朝着更智能的方向发展. 智能城市的核心组 ...
- opencv 车辆识别_人工智能实战项目:使用OpenCV和Python构建自己的车辆检测模型
总览 对智慧城市的想法感到兴奋吗?您会喜欢本教程的内容,以构建自己的车辆检测系统 在深入研究实现部分之前,我们将首先了解如何检测视频中的移动对象. 我们将使用OpenCV和Python来构建自动车辆检 ...
- python车辆检测_使用OpenCV和Python构建自己的车辆检测模型
总览对智慧城市的想法感到兴奋吗? 您会喜欢本教程,内容是构建自己的车辆检测系统. 首先,我们将了解如何在视频中检测运动物体,然后再进入实践部分. 介绍 我喜欢智慧城市的想法.关于自动化智能能源系统,电 ...
- 基于opencv的车辆检测python_使用OpenCV和Python构建自己的车辆检测模型
作者|PRATEEK JOSHI 编译|Flin 来源|analyticsvidhya 概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分 ...
- opencv 轮廓放大_【走进OpenCV】这样腐蚀下来让我膨胀!
小白导读 学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了[走进OpenCV]系列,主要帮助小伙伴了解如何调用OpenCV库,涉及到的知识点会做简单讲解. 本文主 ...
- c# opencv 轮廓检测_基于OpenCV的区域分割、轮廓检测和阈值处理
OpenCV是一个巨大的开源库,广泛用于计算机视觉,人工智能和图像处理领域.它在现实世界中的典型应用是人脸识别,物体检测,人类活动识别,物体跟踪等. 现在,假设我们只需要从整个输入帧中检测到一个对象. ...
- python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
图像的基本操作 在上个教程中,我们介绍了使用鼠标画笔的功能.本次教程,我们将要谈及OpenCV图像处理的基本操作. 本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关.要使用Open ...
最新文章
- jQuery - 获取并设置 CSS 类
- webservice 函数2007不可以用_Excel出了一个新函数,太好用啦!但我不建议你们学……...
- while循环中指针会自动释放吗_C++】C++常见面试题汇总_持续更新中...
- leftjoin多了性能下降_MySQL 性能优化总结
- Ruby设计模式透析之 —— 适配器(Adapter)
- 今天,我们考大学是为了什么?
- 软件工程导论复习知识点
- Android多国语言values语言包
- 台达服务器电源原理电路图,详细解析开关电源电路:工作原理,电路组成,电路图...
- CMOS、TTL门电路基础
- 小程序防抖功能以及wx:for的使用
- 和极有家一起玩转智能家居——极有家未来之家合作招募
- MATLAB|创建指定行列大小行向量/零矩阵/单位阵含测试用例
- 流量来了,去努力保护好你的系统
- 浏览器服务器协议,浏览器工作原理之HTTP协议
- 手机火狐浏览html文件在哪里,火狐手机浏览器书签在哪?
- 思杰 Citrix 微软 Vmware 应用虚拟化 服务器虚拟化 桌面虚拟化 对比
- 配置mldonkey
- 常见传统算法实现DOA估计总结CBF、Capon、MUSIC、ESPRIT、OMP
- Ubuntu 16.04 MongoDB数据库备份与恢复