2023-3-10 14:05:08 [显示全部楼层]
15965浏览
查看: 15965|回复: 1

[教程] 【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼

[复制链接]
本帖最后由 JIAJIA 于 2023-3-10 14:05 编辑

AI行人交通电子眼

“斑马线上的电子警察”在很久之前就正式上岗了,主要用于抓拍不礼让行人的机动车辆。当然驾驶员都表示愿意主动礼让行人,也有驾驶员说出了自己的顾虑,比如有时行人过马路不管不顾,打电话、看手机、闯红灯。遇到这种情况,如何才能保证机动车辆和行人都能够有序通过呢?

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图1

接下来,就使用行空板、人体红外运动传感器、USB摄像头制作一款AI行人交通电子眼。AI行人交通电子眼作为监督行人过斑马线的“电子警察”,24小时监管过马路的行人,帮助行人文明出行。

任务目标

行空板上每隔30s切换一次显示方式,在红灯情况下,如果斑马线上的人体红外传感器检测到有行人时,就对行人进行抓拍,并将抓拍照片显示在行空板上。


知识点

1. 掌握USB摄像头拍照的方法
2. 了解USB摄像头的工作原理
3. 掌握查看行空板系统文件的方法

材料清单

硬件清单:

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图2

软件使用:Mind+编程软件 x1

下载地址:https://mindplus.cc/

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图3

动手实践

AI行人交通电子眼用于在红灯时,抓拍违规过斑马线的行人,并对该行人进行拍照,将拍摄的照片显示在行空板上,接下来就从下面几个小任务来实现吧!

任务一:人体感应电子眼

人体红外运动传感器检测到有人时,就使用USB摄像头进行拍照,并将拍下的照片显示在行空板上。

任务二:设计交通信号灯

在行空板上根据倒计时实现红灯、黄灯,以及绿灯的切换。

任务三:AI行人交通电子眼

红灯时,人体红外运动传感器检测到斑马线上有行人,摄像头进行拍照并将照片显示在行空板上。

任务一:人体感应电子眼

1.硬件连接

USB 摄像头是一款插入USB端口,就能工作的免驱摄像头。将摄像头连接到行空板的USB端口,人体红外运动传感器连接到行空板的P24引脚,硬件连接成功后,使用USB线将行空板连接到计算机。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图4

注意:关于“USB摄像头”的相关介绍,见知识园地。

2.软件准备

打开Mind+,按照下面图示完成软件准备工作。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图5

添加OpenCV库,点击“扩展”,在官方库中找到“OpenCV”并点击,完成添加。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图6

3.编写程序

要实现摄像头拍照,首先需要使用创建VideoCapture对象指令,创建一个名为vd的视频捕获对象。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图7

对象创建成功后,使用VideoCapture对象vd打开视频\设备指令,打开摄像头。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图8

开始拍照之前,需要使用VideoCapture对象是否初始化完成指令,检查摄像头是否初始化完成。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图9

摄像头打开成功后,就判断人体红外运动传感器是否检测到有人(P24 = 1)。如果有人,使用从VideoCapture对象中抓取下一帧指令,抓拍一张摄像头中的画面。使用保存图片指令,将图片名为Mind+.png的图片保存在行空板系统文件中。

注意:查看保存到行空板的图片方法,见知识园地。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图10

照片拍摄成功后,可以使用显示图片的方式,将摄像头拍摄的照片显示在行空板上。下面,从图片素材库中任意导入一张图片到文件系统。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图11

使用显示图片指令与更新对象数字参数宽指令,将导入的图片.png显示在行空板上。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图12

现在行空板上显示的是导入的图片,怎样才能将摄像头拍摄的图片显示在行空板上呢?使用更新图片指令,更新图片源为摄像头拍摄的图片Mind+.png。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图13

4.程序运行

点击运行,程序运行成功后,触发人体红外运行传感器,行空板上实时显示摄像头拍摄的图片。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图14


任务二:设计交通信号灯

在开始编程之前,先来分析一下,这个任务中具体要实现哪些功能?首先需要设计一个简单的界面,然后完成交通信号灯,红灯、黄灯、绿灯的显示,最后根据倒计时完成交通信号灯的切换。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图15

1.编写程序

(1)UI界面设计

为了简化程序,这里将界面中的框以及不变的文字制作成了一张背景图,下面将背景图片,从图片素材库中导入到文件系统。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图16

Python主程序开始下,使用显示图片指令,将背景图片显示在行空板上。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图17

使用填充圆形指令,先将圆形填充红色代表红灯,再将代表黄灯和绿灯的圆形填充为白色。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图18

在红绿灯的右侧还要一个倒计时的显示,使用显示放数码管字体指令,设置显示内容为30,显示颜色为红色。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图19

(2)切换交通信号灯

如何才能实现交通信号灯的切换呢?分别新建三个函数,红灯、绿灯、黄灯。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图20

在红灯函数下,使用更新颜色指令,将对象名hong的颜色更新为红色,其余两个对象的颜色更新为白色。其余两个函数,使用同样的方法即可。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图21

实现不同颜色的信号灯切换,可以在循环执行指令中通过调用红灯、绿灯函数来实现。以30s的时间为例,先调用红灯函数等待30秒后,调用绿灯函数等待30秒。实现红灯亮30秒后,切换为绿灯;绿灯亮30秒后,切换为红灯。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图22

(3)实现倒计时

在实际生活中,交通信号的等待时间,会以倒计时的形式出现。接下来就将程序中的等待30秒指令,改为倒计时显示。使用for循环指令,设置变量my variable的范围为30-1,每隔1。然后使用更新文本内容参数指令,更新倒计时为变量my variable

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图23

倒计时还剩5秒时,将红灯切换黄灯。使用条件判断指令,判断变量my variable<6?小于6时,就调用黄灯函数

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图24

下面,大家用同样的方式,实现绿灯的倒计时显示吧!完整程序如下:

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图25

2.程序运行

点击运行,程序运行成功后,行空板上显示交通信号灯,交通信号灯会根据倒计时实现红灯—黄灯—绿灯—黄灯的切换。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图26

任务三:AI行人交通电子眼

任务一实现了人体感应电子眼,任务二实现了根据倒计时切换交通信号灯。AI交通行人电子眼其实就是任务一和任务二的结合,将任务一的功能在任务二的调用红灯函数下来实现。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图27

1.编写程序

这个任务的程序,在任务二的基础上进行修改。在Python主程序开始下,使用创建VideoCapture对象指令、VideoCapture对象vd打开视频\设备指令、VideoCapture对象是否初始化完成指令,检查摄像头是否初始化完成。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图28

红灯时,人体红外运动传感器检测到有行人,摄像头拍照并将拍摄的画面显示在行空板上。说明摄像头拍照的程序需要在调用红灯函数下来实现,可是怎样才能让红灯切换程序和摄像头拍照的程序同时执行呢?使用线程启动指令,在调用红灯函数下启动线程。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图29

当线程启动后执行指令下,使用条件指令,判断人体红外运动传感器是否检测有人(P24 = 1?)。如果有人,就使用从VideoCapture对象中抓取下一帧指令,抓拍一张摄像头中的画面,并使用保存图片指令,将图片保存到行空板本地文件中。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图30

要让拍下来的违规行人照片显示在行空板上,在Python主程序开始下,使用显示图片指令与更新数字参数指令,设置图片的显示位置。在线程中使用更新图片指令,更新显示图片为Mind+.png,完整程序如下:

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图31

2.程序运行

点击运行,程序运行成功后。行空板界面上根据倒计时切换红绿灯显示,当人体红外运动传感器检测到有人时,行空板的显示界面上显示摄像头中的画面。

3.试一试

上面的程序还有一点小问题,在绿灯时,人体红外运动传感器检测到有行人时,摄像头也会拍照并将照片显示在行空板上。接下来,大家修改一下程序,实现在红灯时,才启动摄像头拍照和显示的功能。

提示:在调用绿灯函数程序下,使用线程停止指令。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图32

知识园地


1.认识USB摄像头

这节课中,用到的摄像头是一款免驱动的USB摄像头,只要将摄像头插入USB端口,就可以工作起来。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图33

摄像头是如何工作的呢?下面简单地了解一下摄像头的工作原理。景物通过镜头生成图像并投射到摄像头内部的图像传感器上,并对图像信号进行加工处理后变成图片文件,再通过USB接口将图片传输到行空板中,最后我们可以在行空板屏幕上显示图片,也可以通过将图片文件下载到电脑上,查看图片。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图34

2.如何查看保存到行空板的图片

在任务一和任务三中,用到了保存图片指令,使用这个指令保存的图片具体存到了什么位置呢?连接行空板10.1.2.3远程终端后,可以看到在文件系统的文件目录下,会多出一个名为行空板中的文件。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图35

点击目录中的mindplus文件夹,然后再点击cache文件夹,找到任务1.mp文件的保存位置。点击任务1.mp,可以看到两个图片文件分别为:图片.png、Mind+.png。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图36

其中,图片.png是我们自己导入的图片文件,也就是项目中的文件。而Mind+.png就是使用保存图片指令从摄像头中获取的图片。右击“Mind+.png”,选择“下载文件到电脑”,将图片下载到电脑上。记住保存的路径,通过电脑就可以查看摄像头拍摄的图片了。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图37

3.如何用计算机访问行空板系统文件

(1)开启行空板文件共享

长按行空板的“Home”键进入菜单页,点击“3-应用开关”,检查文件共享服务是否开启,如果显示“已禁用”,点击文件共享选项,切换文件共享状态为“启用中”。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图38

(2)配置电脑

方法1:在电脑桌面上,找到“此电脑”双击打开。在地址栏输入板子的网络地址,格式为\\ip地址\,使用USB线连接电脑ip地址为10.1.2.3。输入\\10.1.2.3\,按回车,打开行空板系统文件夹。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图39

方法2:使用快捷键win+R打开运行窗口,输入网络地址\\10.1.2.3\,点击确定,打开行空板系统文件夹。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图40

行空板系统文件夹中,分别有media、root文件夹,其中,root为行空板板载的内存空间,media为外部连接的硬盘空间(给行空板插上SD卡或者通过USB口连接硬盘后会自动挂载在这个文件夹下)。

(3)查看保存到行空板的图片

双击root文件夹,会提示输入访问账号和密码。输入对应的账号和密码后,点击确定进入行空板的root文件夹。

账号:root

密码:dfrobot

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图41

在文件夹列表中,找到mindplus文件夹,然后再点击cache文件夹,找到任务1.mp文件的保存位置。点击任务1.mp,同样可以看到两个图片文件分别为:图片.png、Mind+.png。

4.指令学习

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图42

挑战自我

仔细观察生活中的交通信号灯,不难发现,红灯时,倒计时的显示颜色是红色的;黄灯时,倒计时的显示颜色是黄色的;绿灯时,倒计时的显示颜色是绿色的。接下来,大家修改一下程序,让倒计时的显示颜色,与交通信号灯的颜色保持一致。

提示:使用更新颜色指令,在对应函数下,更新倒计时对象的显示颜色即可。

【行空板】用Python玩转开源硬件-第11课:AI行人交通电子眼图43

附件下载

下载附件第11课 AI交通行人电子眼.zip

手机连接万物  中级技师

发表于 2023-12-10 15:21:52

不错不错!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail