前言

在信息技术日益成为现代教育核心的今天,如何有效地实施和开展信息科技课程已成为教育工作者的重要任务。因此行空板信息科技实验盒应运而生,专为满足中小学信息科技课程标准设计,旨在为教师和学生提供一个功能全面、易于操作的学习工具。其高集成度和便利的收纳设计,使其成为大班教学的理想选择,帮助教师高效地开展信息技术课程,提升课堂教学效果。

行空板信息科技实验盒以行空板为核心,集成了摄像头、麦克风、小音响等多种常用组件,用户无需额外连接其他设备,即可完成从基础的传感器应用到高级的人工智能项目。丰富的输入、输出类传感器,结合行空板SIoT,能够搭建完整的物联网信息系统。同时,实验盒还提供了丰富的扩展接口,可实现更多功能的扩展。

目标

  • 介绍行空板信息科技实验盒的主要组件及其功能,帮助用户熟悉各部分的使用方法。
  • 指导用户进行基本的硬件连接和软件安装,以便顺利开启实验盒。
  • 提供基础示例项目,帮助用户通过实际操作来熟悉实验盒的使用,从而掌握关键的技术概念和技能。

适用对象

  • 中小学信息科技课程相关的教师及学生。
  • 对开源硬件和机器人感兴趣的初学者及爱好者。
  • 已经使用过行空板的用户。

本手册,将带您深入探索行空板信息科技实验盒的强大功能和多种应用场景。从简单的操作入手,到复杂的项目实施。接下来就让我们一起去开启这段充满挑战的科技之旅,共同探索无限的可能性!

一、行空板实验盒通用知识

1. 硬件介绍

1.1 实验盒简介

行空板信息科技实验盒是一款专门为满足信息科技课程标准而设计的多功能、高集成的教育实验箱套件。它方便收纳,适合大班教学,能帮助老师高效展开信息科技课程。

1.2 主要特点

  • 以行空板为核心,搭配摄像头、麦克风、小音响可实现各类人工智能项目。
  • 集成丰富的输入、输出类传感器,结合行空板SIoT可搭建完整的物联网信息系统。
  • 内置超声波、巡线、电机等模块,满足一台小车的基础功能。
  • 提供丰富的扩展接口,支持更多功能的开发。
  • 结合教材需求,能够完成过程与控制、物联网、AI等常见项目的实践。

1.3 板载功能

:5路巡线传感器,电机,轮子,microSD卡接口,USB TYPE-A接口,SR04超声波传感器属于高配版中的功能。

如果你想拥有更多功能的实验盒,可以选择高配版,高配版的实验盒内置的超声波、巡线、电机等模块,满足一台小车的基础功能需求,点击行空板M10信息科技实验盒查看高配版详情。

1.4 系统框图

行空板信息科技实验盒以行空板为核心,采用计算机与单片机双处理器架构。计算机部分包括CPU、内存、硬盘、屏幕及外设,运行Linux系统,负责主要的计算任务。单片机负责控制板载元件及外部IO口,计算机系统通过pinpong库对单片机进行控制,实现协处理器的功能。

1.5 参数说明

核心部分

功能 说明
CPU 型号:RK3308

架构:Arm 64位

4核主频:1.2GHz
内存 512MB DDR3
硬盘 16GB eMMC
内置操作系统 Debian 10
Wi-Fi&蓝牙 型号:RTL8723DS

Wi-Fi: 2.4GHz

蓝牙: Bluetooth 4.0
协处理器 型号:GD32VF103C8T6

架构:RISC-V

主频:108MHz

Flash:64KB

SRAM:32KB

传感器&执行器

功能 说明
屏幕 尺寸:2.8寸

分辨率:240x320

显示颜色:彩色

特性: 可触控
光线传感器 PT0603 光敏三极管
六轴传感器 ICM20689 三轴加速度三轴陀螺仪
角度传感器 引脚:P10

输出范围:0-4095

旋转角度:300°
摇杆 X轴引脚:P0

Y轴引脚:P1

输出范围:0-4095
温湿度传感器 温湿度传感器:AHT20

温度:-40-85℃ 精度±0.3℃

湿度:0-100%RH 精度±2%RH
实体按键 Home按键:长按进入菜单页面

ON/OFF按键:长按可开启/关闭实验盒

A按键(上按键):与行空板上A按键功能一样

B按键(上按键):与行空板上B按键功能一样

左按键:P11

右按键:P12
电导开关 引脚:P7

输出类型:高低电平
红外传感器 输出类型:高低电平

检测距离:0~10cm

备注:该传感器可拆卸,出厂时已经安装好。
RFID模块 通信接口 :I2C

I2C地址:0x7c

芯片:PN7150

通信频率:13.56MHz

最大检测距离:不低于10mm

读写器模式:支持ISO/IEC 14443A、ISO/IEC 14443B、MIFARE协议、FeliCa协议

备注:该传感器可拆卸,出厂时已经安装好。
摄像头&麦克风 摄像头: 200万像素;彩色最大 30 帧无拖影,最大分辨率1600x1200

麦克风:最大输出值为100

备注:该传感器可拆卸,出厂时已经安装好。
红黄绿LED灯 引脚:红灯P2;黄灯P3;绿灯P4

直径:8mm

输出类型:高低电平

红灯和黄灯支持PWM控制
RGB LED灯 引脚:P9

WS2812 RGB灯 x 4

亮度显示:0~255

全彩:1600万色
喇叭 方形2030腔体喇叭

备注:该传感器可拆卸,出厂时已经安装好。

接口

功能 说明
USB Type-C接口 用于CPU连接PC编程或主板供电
USB TYPE-A接口(高配) 用于外接USB外设,如U盘
microSD卡接口(高配) 用于扩展存储空间
3Pin I/O P21~,P22~,P23~,P24

备注:~表示该引脚可接模拟传感器
4Pin I2C 独立2路I2C接口,不与板载I2C元件共用

指示灯

功能 说明
电量指示灯 状态:白色,紫色,红色

白色表示满电,紫色表示还有一半的电,红色表示没电了。
USER指示灯 状态:闪烁红色

USER灯闪烁表示系统正常运行
POWER指示灯 状态:红色

电源灯,开机就显示红色
充电指示灯 状态:绿色

接上充电线时一直亮绿色,充满电后熄灭

电源

功能 说明
供电 18650电池供电
工作电压 3.3V
最大工作电流 2000mA

1.6 引脚功能说明

1.7 尺寸

长x宽x高:160mmx120mmx33mm

1.8 存储卡操作

实验盒的左侧上方,有一个micro SD卡槽,将SD卡插入卡槽中,插入方式见下面操作图。

注意:插卡时,需要将SD插入卡槽中,听到卡被扣住的声音,才算插卡完成。拔SD卡时,是通过按下弹出的方式拔卡。

注:基础版中,不包含TF卡,可自行在官网中购买TF卡

1.9 行空板M10通用知识

实验盒上的主控使用的是行空板M10,连接方式、菜单操作、本地Wed主页,SMB文件共享、VNC屏幕共享、系统镜像烧录、编程软件介绍等,都与行空板M10的操作方式保持一致。详细的操作方法,可以查看行空板M10通用功能

注意:操作过程中,会使用到Home按键,A、B按键,实验盒的Home按键及A、B按键参考下图的标注。

二、编程平台

实验盒的主控使用的是行空板M10,而行空板M10自身作为一个单板计算机可以直接运行Python代码,同时默认开启了ssh服务及samba文件共享服务,因此可以用任意的文本编辑器编写代码,然后将代码传输到行空板即可运行。

初学者推荐使用Mind+对行空板进行编程,可以一键连接、文件管理、图形&代码两种方式编程。

有Python经验的用户可以按照个人习惯选择适合自己的编程方式,例如使用jupyter notebook、vscode、thonny,或使用Mind+进行编程。

有Linux开发板经验的用户可以查看行空板通用功能说明,按照按照个人习惯操作。

此处重点展示使用Mind+图形化编程,编写程序。

其他编程方式的教程,正在更新中……

1. 使用Mind+编程

  • 下载Mind+支持行空板的版本(V1.8.3 RC3.1及以上版本)

  • 打开Mind+:打开Mind+,并切换到Python模式,切换编程方式为图形化“模块”

  • 添加行空板库:点击扩展,在“官方库”中选择行空板

  • 添加实验盒用户库:点击扩展,在“用户库”的搜索栏中,选择实验盒用户库。输入用户库链接,选择实验盒用户库。

    实验盒用户库链接:https://gitee.com/zhaoruiz/ext-unihiker-box

本文档中,涉及到的所有用户库

  • 实验盒整体库:https://gitee.com/zhaoruiz/ext-unihiker-box
  • 红外避障的库 https://gitee.com/chenqi1233/ext-infrared-sensor
  • 温湿度:https://gitee.com/zhaoruiz/ext-aht20
  • RFID: https://gitee.com/zhaoruiz/ext-rfid

2. 连接主控-行空板M10

2.1 本地连接

  • 使用USB线,将电脑和实验盒连接。并长按实验盒上的开机键(长按3-5秒),等待实验盒开机成功。

  • 实验盒开机成功后,在Mind+界面中,点击“连接远程终端”,选择10.1.2.3,连接行空板。

    注意:10.1.2.3为USB线直连时的固定IP地址。

2.2 无线连接

  • 使用USB线将实验盒与电脑连接,且实验盒保持为开机状态。

  • 打开浏览器,在浏览器地址栏输入“10.1.2.3”,进入到行空板主页。

  • 进入网络设置功能,点击“扫描”,扫描可用WiFi名称,输入对应的密码后,点击“连接”。当WiFi连接成功后,自动分配网络IP地址。

    注意:电脑需要和行空板连接同一个WiFi。

  • 在Mind+连接远程终端中,选择“手动输入”,在地址中输入分配的网络IP地址“192.168.0.34”,并点击“确定”。

  • 连接成功后,“连接远程终端”自动变为连接的网络IP地址。

三、实验盒基础使用说明

1.传感器

1.1 角度传感器

积木
功能说明 读取板载角度传感器的值。

当传感器顺时针转动时,返回的值会增大;逆时针转动时,值会减小。

输出值的范围为 0 到 4095。

示例项目-01:在主控板上绘制一个矩形框,通过转动角度传感器填充矩形框。
示例程序

示例效果

示例项目-02:裸板程序移植操作

你之前可能在行空板裸板上使用过外接角度传感器,现在需要将该程序移植到实验盒上。为了避免重新编写代码,你只需将程序中角度传感器的引脚更改为P10即可。
例如,你曾在行空板裸板的P21引脚上连接角度传感器,并将传感器的检测值显示在行空板的屏幕上。现在,你想将这个程序移植到实验盒上,同时保持与裸板相同的功能,而无需添加实验盒的库。你只需要按照以下步骤进行操作:将程序中的传感器引脚从P21改为P10,即可在实验盒上实现相同的功能。

示例程序

硬件连接 程序示例 运行效果
行空板M10-裸板
实验盒

1.2 摇杆

积木
功能说明 读取摇杆上关于X轴和Y轴的值,摇杆位置对应的坐标如下图。

示例项目:在主控板上绘制一个小球,通过摇杆控制小球上下左右移动。

示例程序

示例效果

1.3 温湿度传感器

积木
功能说明 读取板载传感器温度数据与湿度数据。温度的单位为摄氏度(℃),湿度单位为%rh。

示例程序-01:将传感器检测到的温湿度数据,实时显示在主控板屏幕上。

示例程序

示例效果

注意:如果您之前使用过行空板完成了一些项目,现在想在原来项目的基础上,添加AHT20温湿度传感器的功能,并在实验盒上运行程序(保持原有程序不删除的情况下,还能使用实验盒的新功能),您只需要在用户库中,添加温湿度的功能库就好了。

温湿度库链接:https://gitee.com/zhaoruiz/ext-aht20

示例项目-02:之前你可能使用行空板M10做了一个环境数据监测项目,主要监测了光线、温度和湿度等数据,现在要在实验盒上,完成同样的功能。你可以将外接的温湿度传感器换成实验盒板载的温湿度传感器,只需要添加温湿度功能库就可以了,并对温湿度检测的程序指令进行替换。

示例程序

硬件连接 温湿度库 程序示例 运行效果
行空板M10-裸板 在pinpong库中添加DHT11传感器。 见视频1
实验盒 在用户库中输入AHT20温湿度库链接:

https://gitee.com/zhaoruiz/ext-aht20
见视频2

示例效果

视频1

视频2

1.4 按键

积木
功能说明 该指令用于判断试验箱上板载的上(A)、下(B)、左(P11)、右(P12)按键,是否被按下。

示例项目:通过按下上、下、左、右按键,控制主控板屏幕上的图片上下左右移动。

示例程序

示例效果

1.5 电导开关

示例项目:当电导开关被导通时,主板屏幕上显示心形图案,否则,显示心碎图案。

示例程序

示例效果

1.6 红外传感器

积木
功能说明 该指令用于判断红外传感器是否检测到前方是否有障碍物。

示例项目:当红外传感器检测到物体时,在主控屏幕上显示提示文字和前方有障碍物的图片。

示例程序

示例效果

注意:如果您之前使用过行空板完成了一些项目,现在想在原来项目的基础上,添加红外传感器的功能,您只需要在用户库中,添加红外传感器的功能库就好了。

红外传感器库链接: https://gitee.com/chenqi1233/ext-infrared-sensor

示例项目-02:获取您之前利用行空板M10、人体红外传感器,制作了人体感应广告牌,现在想将该项目的程序移植到实验盒上,该怎么做呢?具体操作方法如下:

  1. 添加红外传感器的库。

  2. 将程序中获取P24引脚的值(人体红外传感器检测到行人),替换为红外探测引脚被触发指令,由于红外传感器是连接在实验盒的P13引脚,因此,需要在该指令中添加行空板引脚P13。

示例程序

硬件连接 示例程序 效果展示
行空板M10-裸板 见视频1
实验盒 见视频2

示例效果

视频1

视频2

1.8 RFID射频模块

积木
功能说明 初始化RFID模块。
积木
功能说明 该指令用于向标签卡写入数据。

注意

1. 白卡前4个数据块为只读区,不可写入数据。从第5个数据块开始,可以进行写入操作。

2. 白卡的数据结构为每个数据块可存放4个字节数据,因此写入时,每个数据块只能写入4个字节。

3. 圆形卡的所有数据块都是可读写操作的,并且每个数据块可以写入16个字节。
积木
功能说明 该指令用于从标签卡中,读取指定数据块的所有数据。
积木
功能说明 该指令用于从标签卡中,读取指定数据块指定指令字节的数据。
积木
功能说明 该指令用于读取标签卡的编号。
积木
功能说明 该指令用于判断检测到的标签编号,是否是我们填入的编号。
积木
功能说明 该指令用于判断在检测区是否检测到标签卡。

示例项目-01

读取标签卡的UID编号,并将读取到的编号显示在行空板屏幕上。

示例程序

示例效果

示例项目-01:当识别到白卡的编号(4341fd1)时,在主控屏上显示文字“欢迎回家”;当识别到其他编号的卡时,显示文字“请刷正确的卡”。

示例程序

示例效果

示例项目-03:通过RFID数据写入指令,向白卡的第5个数据块对应的4个字节中,依次写入数据10、20、30、40。然后使用读取RFID指令,读取该卡第5个数据块中的数据。

注意:进行读写操作时,需要将标签卡放到识别区域,然后再上传程序,否则会报错。

示例程序

示例效果

注意

  1. 如果您之前在行空板上使用过NFC模块并完成了一些案例,现在想将程序运行在实验盒上,您只需在用户库中添加RFID功能库,并替换之前的NFC代码即可。

  2. 如果您想在原有的裸板程序中添加RFID功能,可以在不改变原有程序的情况下,直接引入RFID功能库,并将程序移植到实验盒上运行即可。

RFID库链接: https://gitee.com/zhaoruiz/ext-rfid

硬件连接 示例程序 示例效果
行空板M10-裸板 见视频1
实验盒 见视频2

视频1

视频2

2. 执行器

2.1 红绿灯

积木
功能说明 该指令用于控制板载的红(P2)、黄(P3)、绿(P4)三个LED灯亮或灭。
积木
功能说明 该指令用于设置板载的红灯、黄灯的亮度。

注意:因为绿灯连接在P4引脚上,该引脚是数字引脚,因此不可以控制绿的亮度。

示例项目:控制红、黄、绿三个灯执行三次亮灭后,再控制红灯和黄色的亮度由亮—逐渐灭,由灭—逐渐亮。

示例程序

示例效果

2.2 RGB LED灯

积木
功能说明 该指令用于初始化连接在P9引脚上的RGB灯。
积木
功能说明 该指令用于设置RGB灯的亮度。最低值为:0,RGB灯灭;最大值为:255,RGB灯最亮状态。
积木
功能说明 该指令用于控制RGB灯全部熄灭。
积木
功能说明 该指令用于设置指定的RGB LED灯的显示颜色。一共有4个RGB灯,灯的编号从0-3。
积木
功能说明 该指令用于设置指定范围内的RGB LED灯显示颜色。
积木
功能说明 该指令用于将指定范围内的 RGB LED 灯设置为彩虹颜色效果
积木
功能说明 该指令用于将所有 RGB LED 灯的颜色向前移动指定单位的位置。
积木
功能说明 该指令用于将所有RGB LED灯的颜色进行循环的旋转操作。颜色会根据指定的单位进行旋转。
积木
功能说明 该指令用于通过RGB三原色的值,控制RGB ELD的灯颜色显示。每个颜色的值为0-255。

示例项目:分别设置4个RGB LED灯显示红色、黄色、绿色、蓝色,然后通过角度传感器控制RGB LED灯的亮度。

示例程序

示例效果

四、OpenCV常用积木使用说明

由于OpenCV涉及到的积木比较多,因此,我们先通过项目来了解一下使用OpenCV积木可以做什么之后,再去学习每条积木是什么意思。

示例项目-01:在行空板屏幕上创建一个视频显示窗口,然后将摄像头检测到画面实时显示在行空板屏幕上。按下实验盒上的A按键,关闭摄像头并将行空板上的显示窗口销毁。

示例程序

示例效果

示例项目-02:通过摄像头检测人脸,然后识别到人脸时,使用红色矩形框,将人脸框选出来。最后,将实时的画面显示在行空板屏幕上。

示例程序

示例效果

1. 基础操作

积木
功能说明 从文件“Mind+.png”中加载图像,并保留所有原始的细节,包括透明度部分。
积木
功能说明 显示图像 img。窗口的标题是 "Mind+'s Windows"。
积木
功能说明 等待 20 毫秒,检查是否按下了 ESC(27) 键。如果按下了 ESC 键,表达式的结果为 True。这通常用于在图像窗口中实现按键退出功能。
积木
功能说明 用于检测具体是哪个按键。

2. 窗口显示

积木
功能说明 创建一个名为 "Mind+'s Windows" 的窗口。
积木
功能说明 将名为 "Mind+'s Windows" 的窗口设置为全屏模式。
积木
功能说明 将名为 "Mind+'s Windows" 的窗口移动到屏幕上的指定位置。
积木
功能说明 将名为 "Mind+'s Windows" 的窗口的大小调整为指定的宽度和高度。
积木
功能说明 关闭并销毁名为 "Mind+'s Windows" 的窗口。
积木
功能说明 关闭所有由 OpenCV 创建的窗口。它会销毁所有打开的窗口,释放相关资源。
积木
功能说明 打开一个窗口,然后在图像上选择一个或多个矩形区域,然后将这些区域的位置和大小记录下来。

3. 图片属性

积木
功能说明 用于获取图像维度属性的属性,通常返回一个包含图像高度、宽度和通道数的元组。
积木
功能说明 用于获取图像总像素数的属性。

具体来说,它返回图像中所有像素的总数,计算方法是图像的宽度 × 高度 × 通道数。
积木
功能说明 用于查看图像数组数据类型的属性,它返回图像中每个像素值的数值类型。
积木
功能说明 用于调整图像大小,并将调节好的图像存储在新对象中。
积木
功能说明 使用切片操作从原图中提取了一部分图像。

50-100 表示你选取图像的列范围(宽度方向)从第 50 列到第 100 列(不包括第 100 列),裁剪出一个宽度为 50 像素的垂直区域。
积木
功能说明 复制图像,并将图像存储到新的对象中,相当于创建一个图像内容相同的副本。这样做的好处是,如果你需要对图像进行处理,但不想改变原图,可以先复制一份再操作。
积木
功能说明 用于对图像进行旋转操作。
积木
功能说明 将图像保存到指定的文件名中。
积木
功能说明 将图像编码成指定的文件格式(如 PNG),并将其保存在内存中,而不是直接保存到磁盘上。
积木
功能说明 这行代码是将从内存缓冲区buff中解码出的图像数据重新加载为一个图像对象。

4. 视频操作

积木
功能说明 创建一个用于捕获视频的对象。
积木
功能说明 用于打开摄像头设备。
积木
功能说明 用于调整摄像头捕获视频的帧宽度和高度。
积木
功能说明 用于从视频文件中打开视频文件,读取视频帧。
积木
功能说明 用于检查摄像头是否成功打开。当摄像头打开成功后,再进行读取帧、处理等操作,避免程序因无法打开设备而崩溃。
积木
功能说明 用于释放 cv2.VideoCapture 对象所占用的资源。这个方法在你完成对视频捕获的使用后调用,以确保摄像头或视频文件被正确关闭,并释放占用的系统资源。
积木
功能说明 用于从视频源中抓取下一帧图像。
积木
功能说明 从视频流中读取一帧图像,并返回该帧图像及其状态。

ret: 这是一个布尔值,表示帧是否成功读取。如果读取成功,ret 为 True;如果失败(如到达视频末尾),ret 为 False。
积木
功能说明 获取视频流处理中缓冲区的大小、当前视频播放的位置、当前视频宽度、高度、帧率、帧数,以便根据需要进行优化配置。
积木
功能说明 设置视频流缓冲区的大小、当前视频播放的位置、当前视频宽度、高度、帧率、帧数。

注意:这些参数越小,处理效率越高,对应的视频质量,流畅度、清晰度也会降低,可以根据实际场景修改。

缓冲区的大小:缓冲区的大小越小,意味着保存的帧数越少,通常用于实时视频处理。

当前视频的播放位置:表示当前视频播放在那里,通常越小表示视频刚开始。

当前视频的宽度/高度:表示每一帧图像的分辨率,越小表示图像尺寸越小,文件体积也更小。

前视频帧率:帧率表示每秒显示多少帧,越小表示视频播放流畅度越差。

当前视频帧数:视频的总帧数,表示视频的总长度,越小表示视频更短。

5. 绘图工具

积木
功能说明 用于在图像上绘制文本,可以设置文本的坐标、颜色、字体大小和线宽。
积木
功能说明 用于在图像上绘制带箭头的直线,可以设置线条的开始点/结束点坐标,也可以设置线条的颜色、粗细。

线条的类型:选填充线、4连线、8连线、抗锯齿线。
积木
功能说明 用于在图像上绘制圆形。

线条的类型:选填充线、4连线、8连线、抗锯齿线。
积木
功能说明 用于裁剪线段,使其只保留在指定矩形区域内的部分。

(x1, y1, x2, y2):定义裁剪区域的矩形,由其左上角的坐标 (x1, y1) 和右下角的坐标 (x2, y2) 决定。这是一个矩形框。

(startX, startY):线段的起始点坐标。

(endX, endY):线段的终点坐标。

ret: 一个布尔值,如果裁剪后的线段有部分在矩形区域内,它将返回True,否则返回 False。

p1: 裁剪后的线段的新起点坐标。如果线段与矩形相交,则返回这个相交点,否则返回原始起点。

p2: 裁剪后的线段的新终点坐标。如果线段与矩形相交,则返回这个相交点,否则返回原始终点。
积木
功能说明 用于在图像上绘制一个标记,可以设置标记的位置、颜色、类型、粗细、大小。

**标记类型:**十字线标记形状、x准线标记形状、星形标记形状、菱形标记形状、方形标记形状、向上指向的三角形标记形状、向下指向的三角形标记形状。
积木
功能说明 用于在图像上绘制一个椭圆,可以设置椭圆的起始角度、结束角度、颜色 、粗细、线型。

**(x, y):椭圆的中心位置坐标。

(longAxisLength, minorAxisLength):**椭圆的长轴和短轴的长度。

**角度:**椭圆的旋转角度(逆时针方向,单位为度)。
积木
功能说明 用于在图像上根据起始点和结束点,绘制一条直线。
积木
功能说明 用于在图像上根据首部顶点、尾部顶点绘制一个矩形。
积木
功能说明 使用不同的方法在图像上添加边框。例如,上下左右后面的数值为10,是设置对用边框的宽度为10像素。

复刻法(cv2.BORDER_REPLICATE):

**- 说明:用原始图像的边缘像素来填充边框区域。边框的像素值是原始图像边缘像素的重复。

- 效果:边框区域的像素值与原始图像边缘像素相同。例如,原始图像的右边缘像素会重复到右边框区域。

反射法(cv2.BORDER_REFLECT):

- 说明:用原始图像的边缘像素进行镜像反射来填充边框区域。边框区域的像素值是原始图像边缘像素的镜像反射。

- 效果:边框区域的像素值是原始图像边缘的镜像。例如,原始图像的右边缘像素会在边框中反射过来。

反射法101(cv2.BORDER_REFLECT_101):

- 说明:类似于反射法,但边框区域的反射略过了原始图像的最外层像素,以避免重复。

- 效果:边框区域的像素值是原始图像边缘的镜像反射,但不包括最外侧的像素。例如,反射边框区域将跳过原始图像的最外侧像素进行填充。

外包装法(cv2.BORDER_WRAP):

- 说明:用原始图像的对侧像素来填充边框区域。即边框的像素值来自于与当前边框区域相对的图像边缘像素。

- 效果:边框区域的像素是从原始图像的相对位置处取得的,就像图像被“包装”起来一样。例如,左边缘的像素会从右边缘的像素中填充。

常量法(cv2.BORDER_CONSTANT):

- 说明:用用户指定的常量值填充边框区域。可以指定边框的颜色或灰度值。

- 效果:**边框区域被填充为用户指定的颜色或值。例如,边框区域的所有像素将设置为指定的常量值,比如纯黑色、白色或任意其他颜色。

6. 图片转换

积木
功能说明 用于将图像进行不同色彩空间转换。
积木
功能说明 用于使用不同的算法对图像进行自适应阈值处理。自适应阈值处理是一种图像二值化的方法,根据图像的局部特性 确定阈值,适用于 光照不均匀的图像。

**邻域大小:**阈值计算的邻域大小,通常为奇数。3表示3x3的邻域。

**常数:**常数值,从计算得到的阈值中减去的常数。常数值0表示没有额外的调整。

1. 平均值算法(Mean Algorithm)

计算: 对每个像素点所在的邻域区域,计算该区域的像素值的平均值,然后用这个平均值减去一个常数作为阈值。

公式: 阈值 = 邻域平均值 - 常数

特点:

- 使用邻域内的所有像素的平均值来计算阈值。

- 所有邻域像素的权重是相等的。

- 适用于光照变化较大的图像,但在边缘和细节部分可能效果不如高斯均值算法平滑。

2. 高斯均值算法(Gaussian Mean Algorithm)

计算: 对每个像素点所在的邻域区域,计算该区域的加权平均值(高斯加权),然后用这个加权平均值减去一个常数作为阈值。

公式: 阈值 = 邻域加权平均值 - 常数

特点:

- 使用高斯权重来计算邻域内的加权平均值,这意味着邻域中心的像素点对阈值计算的贡献更大,而边缘像素点的贡献较小。

- 这种方法可以更好地处理光照变化和噪声,尤其是在图像的边缘和细节部分表现更平滑。

- 高斯加权使得阈值计算对中心区域的像素更敏感,从而改善了图像的细节保留。
积木
功能说明 用于通过掩码,计算前景像素到最近背景像素的直线距离(也称曼哈顿距离)。前景像素也称非零像素,背景像素也称零像素。

**注意:**非零像素与零像素分别是指图像经过二值化处理后的白色图像(非零)和黑色图像(零)。

距离算法:

- **曼哈顿距离:**只能沿着水平和垂直方向走,不能走斜线,也称街区距离。

- **欧几里得距离:**最短的直线距离,不能拐弯。

- 切比雪夫距离:既可以水平走,也可以垂直走,还可以斜着走。
积木
功能说明 通过制定的阈值范围,对图像进行二值化处理,将图像分成两部分:前景和背景。
积木
功能说明 对图像进行高斯模糊平滑处理,这是一种常用的图像平滑技术,用于减少图像噪声和细节。
积木
功能说明 对图像进行边缘检测。

**阈值1:**又称低阈值,它是用于确定像素是否可能是边缘的一部分,表示边缘强度的下限。低于此阈值的像素不会认为是边缘的一部分,但如果像素的强度高于此阈值且连接到其他强边缘像素,则可能被认为是边缘。

**阈值2:**又称高阈值,它是用于确定像素是否可能是边缘的一部分,表示边缘强度的上限。只有像素强度高于此阈值的像素会被认为是边缘。如果某像素的强度低于此阈值,则不会被认为是边缘。
积木
功能说明 查找出图像的外轮廓点,并将所有的点保存。
积木
功能说明 在图像上绘制轮廓线,并将绘制好的轮廓线和图像进行保存。

7. 对象检测

积木
功能说明 级联分类器是OpenCV提供的一个类,用于加载和使用预训练。是一种基于Haar特征的对象检测方法,通常用于面部、眼睛、行人等检测。
积木
功能说明 加载级联分类器中的模型文件。
积木
功能说明 判断级联分类器是否加载成功。
积木
功能说明 用于在图像中检测对象。

**缩放比例:**图像金字塔中每次缩放的比例。值越大,检测速度越快,但是可能漏掉一些对象。

**相邻个数:**矩形框周围需要的邻近矩形框的最小数量。值越高,检测结果越可靠,但可能会漏掉一些对象。

五、综合案例

案例1-雷霆战机

项目描述

通过摇杆的 X 轴控制战机在屏幕上左右移动,并通过按下 A 按键(上按键)发射子弹。敌机会随机生成在屏幕上,当子弹击中敌机时,敌机会显示爆炸效果。

示例程序

运行效果

案例2-自动门禁系统

项目描述

在日常生活中,出入门禁系统广泛应用于学校、社区和公司。现在我们使用实验盒和舵机来设计一个简易的自动刷卡门禁系统。当卡片靠近识别区域时,舵机转动到100度(模拟开门);等待5秒后,舵机转动到10度(模拟关门)。

硬件准备

  • 实验盒 x1
  • 舵机 x1
  • RFID卡 x1

硬件连接

将舵机连接在实验盒的P21引脚。

程序示例

运行效果

案例3-智能考勤系统

项目描述

人脸识别技术已经逐渐应用于各种场景,如公司考勤、学校签到、门禁管理等。下面我们使用实验盒,设计一款人脸识别考勤系统。系统使用摄像头捕捉人脸,当识别到已登记的人员时,自动完成签到打卡。

软件准备

需要在用户库中,搜索并添加人脸识别库。

示例程序

程序1:采集并训练人脸

**注意:**要采集多个人脸时,需要修改程序中的人脸编号。

程序2:识别人脸

运行效果

识别到采集过的人脸时,RGB灯显示绿色,屏幕上显示打卡成功;识别到未采集过的人脸时,RGB灯显示红色,屏幕上显示打卡失败。

案例4-IoT室内环境监测仪

项目描述:

实验盒主控屏幕上实时显示图标与环境数据,并且将环境数据按照各自的主题发送到SIoT服务器。

示例程序

运行效果

实验盒上的传感器每5秒钟采集一次环境数据,并将数据发送到SIoT服务器平台。同时,主控屏幕也会实时同步最新数据。

案例5-智能园艺助手

项目描述

智能园艺助手是一个基于传感器技术的自动化园艺管理系统,旨在提高植物的生长环境,简化日常园艺维护。该系统具备温度监测和土壤湿度检测功能,能够根据实时数据的来控制灌溉和通风设备。系统分为自动控制和手动控制两种模式,确保用户在不同情况下都能灵活管理植物的生长。

**手动控制:**用户可以通过屏幕上的按钮手动控制浇水和风扇的开关,方便灵活地管理植物需求。
**自动控制:**当土壤湿度低于预设阈值时,系统自动启动水泵进行灌溉;当环境温度大于预设阈值时,系统自动启动风扇进行通风。

硬件准备

  • 行空板实验盒 x1
  • 土壤湿度传感器 x1
  • 风扇模块 x1
  • 水泵 x1
  • 简易继电器 x1
  • 电池盒 x1

硬件连接

将土壤湿度传感器连接到P21引脚,风扇连接到P23引脚,继电器连接到P24引脚,

示例程序

运行效果

更多综合案例正在更新中……