独家|利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码&解析)

640?wx_fmt=png

作者:Jose Garcia

翻译:吴振东

校对:张一豪

本文约4000字,建议阅读14分钟

本文将利用OpenCV,Python和Ubidots来编写一个行人计数器程序,并对代码进行了较为详细的讲解。


数字图像处理(DIP)技术目前发展非常迅速,这在很大程度上要归功于开发人员可以访问云来运用机器学习技术。通过云处理数字图像可以绕过任何专用硬件的要求,这使得使用DIP成为了大家的首选。作为处理图像最经济和最通用的方法,DIP已经被广泛应用。这种其中最常见的当属行人检测和计数 - 这对于机场、火车站、零售店体育馆、公共活动和博物馆来说都是一项非常有用的指标。


现有的传统行人计数技术不仅价格昂贵,而且它们所生成的数据通常与专有系统相关联,这些系统限制了数据提取和KPI的优化选择。相反,使用你的个人相机和SBC的嵌入式DIP不仅可以节省时间和金钱,还可以根据你所关注的KPI来自由定制应用程序,并从云中获取独特的领悟。


使用云来启用DIP IoT(物联网)应用程序可以增强整体的功能性。随着可视化、报告、警报和交叉引用外部数据源(如天气、实时供应商定价或业务管理系统)等功能的增强,DIP为开发人员提供了他们所需的自由空间。


想象一下一家摆着冰淇淋冰柜的杂货店:他们想要追踪统计经过店门口的人数,顾客所选择的产品,以及门被打开的次数和冰柜的内部温度。 从这几个数据点中,零售商可以运行相关性分析,以更好地了解和优化他们的产品定价和冰箱的整体能耗。


为了开启你的数字图像处理应用程序开发工作,Ubidots运用OpenCV和Python创建了一套人员计数系统教程,用于分析统计给定区域中的人数。其实不仅是统计人数这样简单,添加Ubidots IoT开发平台的资源还可以扩展你的应用程序。在这里,你可以看到如何实现利用Ubidots来构建的实时人数统计仪表板。


在本文中,我们将介绍如何使用OpenCV和Ubidots来实现简单的DIP叠加并创建行人计数器。此示例最适用于任何基于Linux的发行版系统,也适用于Raspberry Pi,Orange Pi或类似的嵌入式系统。


有关其他集成的查询,请与Ubidots支持中心取得联系,以便来了解你的企业如何使用这项增值技术。


目录:


  1. 应用需求

  2. 编码 – 8个小节

  3. 测试

  4. 创造你自己的仪表板

  5. 结果展示


1、应用需求


  • 任何带有Ubuntu衍生版本的嵌入式Linux

  • 操作系统中安装了Python 3或更高版本

  • OS中安装了OpenCV 3.0或更高版本。如果使用Ubuntu或其衍生产品,请按照官方安装教程或运行以下命令:

pip install opencv-contrib-python


当你成功安装Python 3和OpenCV时,你可以通过这段简单的代码来进行检验(首先在你的terminal里输入‘python’)


import cv2 cv2.__version__


你应该在屏幕上看到你所安装的OpenCV版本:


640?wx_fmt=png


  • 按照官方操作指南来安装Numpy,或者运行下面的命令


pip install numpy


  • 安装imutils


pip install imutils


  • 安装requests


pip install requests


2、编码


可以在这一章节找到检测和发送数据的整个例程。为了更好地解释这段代码,我们将其分为八个部分,以便更好地解释代码的各个方面,让你更容易理解。


第1节:


from imutils.object_detection

import non_max_suppression

import numpy as np

import imutils

import cv2

import requests

import time

import argparse

 

URL_EDUCATIONAL = "http://things.ubidots.com"

URL_INDUSTRIAL = "http://industrial.api.ubidots.com"

INDUSTRIAL_USER = True  # Set this to False if you are an educational user

TOKEN = "...."  # Put here your Ubidots TOKEN

DEVICE = "detector"  # Device where will be stored the result

VARIABLE = "people"  # Variable where will be stored the result

 

# Opencv pre-trained SVM with HOG people features

HOGCV = cv2.HOGDescriptor()

HOGCV.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())


在第1节中,我们导入必要的库来实现我们的探测器,imutils是一个有用的DIP库工具,让我们从结果中执行不同的转换,cv2是我们的OpenCV Python包装器,requests 可以通过HTTP发送数据/结果到Ubidotsargparse让我们从脚本中的命令终端来读取命令。


重要提示:不要忘记使用您的Ubidots帐户

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值