在物联网的发展过程中,智能化分析能力是推动物联网系统向高效精准方向 发展的关键之一,通过引入先进的目标检测技术,能够进一步增强物联网系统对 复杂场景的适应能力。本实验以琏雾系统为基础,探索如何高效获取摄像头的视 频流,并结合目标检测技术,快速构建具有智能分析能力的物联网系统,为学生 提供理论与实践结合的学习机会。
实验中,将学习如何应用YOLO(You Only Look Once)目标检测技术, 通过琏雾系统简化视频流处理与智能分析的实现过程。该实验不仅帮助学生掌握 目标检测的核心技术,还能深刻理解琏雾系统在提升物联网应用开发效率与智能 分析能力方面的作用,为未来相关领域的开发与创新奠定基础。
1.实验目的
通过学习如何利用琏雾平台高效率获取摄像头的视频流,并应用YOLO目标检测技术,实现快速构建智能物联网系统的方法,提升物联网应用的智能分析能力。
2.实验要求
首先学习如何通过琏雾系统获取视频流,并在示例应用中展示视频流。运行本实验提供的示例代码(由HTML、CSS和JavaScript编写)进行视频流播放应用,调试并记录实验过程。学习YOLO目标检测技术,并将其应用于获取的琏雾系统视频流中,实现目标检测和识别。记录实验过程中的调试步骤和结果,分析YOLO 识别技术在视频流处理中的应用。
3.实验内容
本实验将利用琏雾系统提供的网络摄像头设备管理能力,获取视频流,并在程序中进行展示。随后,应用YOLO识别技术对视频流进行目标检测,分析视频内容中的物体识别结果。通过这一过程,掌握视频流处理与智能分析的综合应用。
4.实验设备及软件
1)实验设备
(1)用来编写运行前端应用程序的笔记本电脑一台;
(2)安装琏雾系统的仿真器一台;
(3)海康威视网络摄像头一个;
(4)五口千兆交换机一个;
(5)摄像头配套12V电源一个;
(6)交换机配套5V电源一个。
2)开发环境(安装在笔记本电脑上)
集成开发环境(IDE):VSCode(Download Visual Studio Code - Mac, Linux, Windows)
编程语言环境:Node.js v16.20.2 (Node.js --- Download Node.js®)
包管理工具:npmv8.19.4(npm - npm)
Python环境:3.12.6(Python Release Python 3.12.6 | Python.org)
5.yolo调用说明
实验提供示例代码,压缩包文件位于桌面上"琏雾实验系统\实验6.3\videoRecognition.zip"中,将压缩包复制到自己的笔记本电脑上,解压后,示例代码位于"\videoRecognition\yolo\"文件夹中"videostream.py",代码中有详细注释。代码的主要运行流程为,首先通过琏雾系统提供的视频流URL获取视频流,当接收到前端传递的视频流URL时,生成一个动态的RTMP推流地址,并启动视频处理逻辑。使用OpenCV捕获视频流,读取每一帧,并使用YOLOv8模型已经训练好的文件进行目标检测,检测结果在帧上可视化。使用FFmpeg将处理后的视频帧推流到指定的RTMP地址(RTMP为RealTimeMessagingProtocol的缩写,意为实时消息传输协议,常用于传输视频和音频)。前端接收推流地址,弹出推流后的视频框,查看目标检测效果。
6.实验步骤
打开实验箱,找到标有"模块四 视频与综合实验配件"的实验模块盒,其中有一个摄像头,一个交换机,两个配套电源线。
1)硬件设备连接
取出设备后,将装有琏雾系统的电脑(后文称之为仿真器),笔记本电脑, 和网络摄像头等硬件设备通过网线连接,如图所示,随后接通电源。


取出设备后,将装有琏雾的一体机,笔记本电脑,网络摄像头的网口通过实验箱内的三根网线的设备连接示意图连接在一起并接好电源。

如图所示,在系统设置中输入"网络连接",打开网络连接配置页面。 随后手动设置IP地址,IP地址设置页面如图所示,分别将仿真器的以太 网IP地址设置为192.168.1.2,笔记本电脑IP地址设置为192.168.1.3。确保 仿真器和网络摄像头,笔记本电脑在一个网段下能互相通信。(其中网络摄像头默认的IP地址为192.168.1.64)。以上IP地址用于配合示例代码运行。

可以通过命令行的ping命令测试相互间是否正常联通。如果联通失败,可尝试关闭防火墙,检查硬件连接。

2)摄像头初始化配置
在连接摄像头、仿真器和笔记本电脑后,摄像头需要进行初始化配置。摄像 头的初始ip为192.168.1.64,在浏览器中输入摄像头的ip地址进入配置页面, 浏览器中的url如图所示。
注册、登录流程省略............


3)琏雾系统配置
在琏雾系统导航栏点击"设置->系统信息",弹出琏雾系统信息页面,如图 6.3.8 所示。点击"系统信息"按钮,出现琏雾系统IP端口配置页面,如图所示。

将操作系统和mqtt服务器的IP地址都修改为设置的仿真器IP地址(本示例为192.168.1.2),点击确定。
打开C盘,进入到琏雾系统安装目录下,找到 C:\IOT\Gates\Gate_2\backVideo 目录,将videoInitInfoConfig 配置文件用记事本打开,如图所示


为了能在琏雾系统中看到所连接摄像头的视频,需修改MqttInfo,VideoInfo,VideoInfoForClient 的 IP 地址为安装有琏雾系统的仿真器的IP地址,即在前文图6.3.9中配置的IP地址信息(本指导书填写192.168.1.2)。
4)摄像头设备连通性测试
在使用摄像头设备之前通过琏雾系统自带功能测试摄像头设备的连通性。
(1)进入视频设备配置
如图所示,在系统首页中的"设备管理"一栏,点击"视频设备配 置"按钮,出现添加网络摄像头界面,如图所示
(2)添加网络摄像头设备
在图中点击"添加"按钮进入视频设备信息配置页面,如图所示。

在视频设备信息配置页面添加摄像头名称,IP地址,用户名,密码等信息,(名称自己根据需要填写,IP、用户名、密码、厂家均参考所示)信息填写完成后点击确定,即可在视频设备配置页面查看配置好的视频设备,如图所示。


(3)视频网关启动
如图所示,在系统首页点击节点测试一栏中的"网关启动",出现启 动网关界面,如图所示。
点击网关号为2的"默认视频采集网关"一行中,操作一栏中的第一个按钮直至网关状态一栏显示"实际",依次点击"更新配置文件"和红色"关闭"按钮,等待红色"关闭"按钮变成绿色"开启"状态,不要关闭弹出的任何页面。

(4)选择摄像头
切换到摄像头预览页面,如图所示,点击之前配置的通道(通道1),等待片刻后,即可观察到网络摄像头传来的实时视频画面。

5)运行视频获取程序
本实验提供搭建好的视频开发项目框架,将装有琏雾系统的电脑的桌面上的"琏雾实验系统\实验6.3\videoRecognition.zip"压缩包文件复制到自己的笔 记本电脑上,解压后,通过VSCode打开项目文件夹show_video,文件路径为: videoRecognition\yolo\show_video,项目工程文件结构如图所示。

其中,App.vue为本实验提供的软件的界面结构文件,用于前端页面展示,mqttLoginService.js 是 示例应用程序与琏雾 mqtt 服务连接的接口,videoService.js 是示例应用程序获取视频流数据的接口,vue.config.js用来配置IP地址和端口信息。在vue.config.js中将IP和端口信息修改为装有琏雾系统仿真器的IP地址和端口(本指导书设置192.168.1.2),如图所示。

在VSCode 中打开终端,输入npm run serve 启动项目(这里需要node v16.20.2 和 npm 8.19.4 的环境),启动成功效果图如图所示。

在浏览器打开地址http://localhost:8080/ ,最终效果如图所示。

6)配置python环境
确保笔记本电脑上有python环境,打开命令提示符(cmd),输入"python" 并按下回车键。如果显示了Python的版本信息,如图所示,则表明Python 已成功安装。若未显示版本信息,请根据步骤"4.实验环境及设备 2)开发环境" 中的链接进入官方网站下载安装Python,并配置环境变量,随后才能在命令行 中正常使用。

7)创建python虚拟环境
本实验提供yolo视频检测代码("videoRecognition\yolo")。
运行该代码需要创建Python虚拟环境。首先,在代码所在目录下打开命令 提示符窗口,然后执行以下步骤:使用命令 python-m venv yolo-env 创建名为 yolo-env 的虚拟环境 , 接着通过命令 call yolo-env\Scripts\activate.bat 激活该虚拟环境。激活后,安装YOLO所需的 依赖包,执行命令 pip install-r requirements.txt。最后,运行视频实时检测代码,输入 python videostream.py,代码运行成功后,效果图如图所示。

点击一个通道的视频,在摄像头前放置一个被识别的物体, 如手机等,软件会显示相应物体的检测框,最终运行成功的yolo检测效果如图所示。





7.报告要求
(1)总结本实验中获取视频数据的实验步骤;
在前一节的实验5.5中,我们已经初步尝试完成了视频数据的获取与展示流程,掌握了如何通过琏雾系统连接摄像头、配置网络环境并在前端页面中实现视频流的播放。而在本次实验6.3中,除了延续这一基础流程外,新增了YOLO目标检测 与视频推流处理 两个关键环节,不再仅仅是"看见视频",而是进一步实现了对视频内容的智能识别与分析。因此,结合YOLO检测与RTMP推流的特点,我们对原有流程进行了更精细的拆解和补充,具体如下:
1. 硬件连接与网络配置
-
从"模块四 视频与综合实验配件"中取出摄像头、交换机及配套电源。
-
使用网线将笔记本、仿真器和摄像头通过交换机互联。
-
手动设置静态IP地址:
-
仿真器设为
192.168.1.2
-
笔记本设为
192.168.1.3
-
摄像头默认为
192.168.1.64
-
-
使用
ping
命令确保设备间网络联通性正常
2. 琏雾系统配置
-
进入琏雾系统主界面,在"设置 -> 系统信息"中将操作系统与 MQTT 服务器 IP 设置为仿真器地址。
-
打开路径
C:\IOT\Gates\Gate_2\backVideo
,使用记事本修改videoInitInfoConfig
配置文件中的MqttInfo
、VideoInfo
和VideoInfoForClient
字段的 IP 地址,统一设为192.168.1.2
。
3. 摄像头设备配置与测试
-
在琏雾系统主页点击"设备管理 -> 视频设备配置",添加摄像头信息(名称、IP、用户名、密码等)。
-
进入"节点测试"模块,启动视频网关,更新配置并确认其状态为"实际""开启"。
-
切换到"摄像头预览"界面,点击通道,确认实时视频画面能正常显示。
4. 【新增】YOLO视频检测流程
-
打开
videoRecognition/yolo
文件夹,确保已安装 Python 环境(版本 ≥ 3.10),使用命令行创建虚拟环境:python -m venv yolo-env call yolo-env\Scripts\activate.bat pip install -r requirements.txt
-
修改并运行
videostream.py
脚本,该脚本完成以下任务:-
接收视频流URL;
-
使用 OpenCV 逐帧读取视频;
-
使用预加载的 YOLOv8 模型对每一帧进行目标检测;
-
将检测结果用边框和标签叠加到图像上;
-
通过 FFmpeg 将处理后的视频实时推流到指定 RTMP 地址供前端调用。
-
-
打开前端页面,点击视频通道后可实时查看带有识别结果的视频画面。
(2)思考并总结yolo算法在工农业物联网场景下的应用前景;
YOLO是什么算法:
YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,它能够在一张图像中同时完成物体定位 和分类识别 ,以极高的速度和较好的准确率完成实时检测任务。相比传统的检测方法,YOLO算法只需一次前向传播就能完成检测,因此非常适合用于视频流等实时场景。
在老师的课程中,我们学过物联网系统一般包括三个环节:前端的传感器采集、中间的数据传输(如转换器或边缘网关)以及后台的计算处理与反馈。而本次实验中,通过YOLO算法对视频流进行目标检测,其实正好模拟了一个典型的"传感器+处理+响应"的物联网应用流程。特别是它的实时处理能力,让我意识到它在工农业物联网中确实有比较广的应用前景。
首先,在工业生产场景中,YOLO可以替代人工监控。比如在流水线上,系统可以实时识别人员是否进入危险区域、物品是否堆放异常、设备是否有误操作等,减少人力负担,提高效率,关键是反应速度快,一旦识别出问题可以立刻通过系统做出响应。
其次,既然YOLO可以识别"人",那也就能识别作物、牲畜或其他农产品。比如在农业大棚中,系统可以识别作物是否出现病虫害、是否缺苗、是否成熟等;在养殖场中,也可以实时检测牲畜的数量、是否出现异常行为等。这比人工巡查效率高得多,也更适合大规模作业。
除此之外,YOLO还可以应用在更通用的物联网场景中,比如仓储物流环节自动识别货物状态、追踪搬运情况,或者在城市交通监控中识别车辆、行人、违规行为等。它的优点就是检测速度快,适合和物联网系统里的实时响应机制配合使用。
(3) 描述实验过程中遇到的问题和解决办法;
问题1:
从终端指令开始到成功运行,这几步的原理是做什么或者说我们为什么要这么做?
在YOLO视频目标检测实验中,整个后端程序运行的过程本质上可以分为环境搭建、依赖安装、模型加载与推理执行几个核心环节。
创建 Python 虚拟环境:使用 venv
模块在当前项目目录下创建一个隔离的Python运行环境(yolo-env),避免全局Python环境中的包版本冲突或干扰。虚拟环境是软件开发中的标准做法,尤其适用于依赖复杂的项目。
激活虚拟环境:通过 activate.bat
脚本将当前终端切换到虚拟环境下,使得接下来运行的 pip
或 python
命令都在该环境中生效。激活后终端前缀会变为 (yolo-env)
,表示已进入隔离环境。
安装依赖包:从 requirements.txt
文件中读取所需库的列表,一次性安装所有依赖,包括 OpenCV、Flask、Ultralytics(YOLOv8)、torch、numpy 等。这些是实现视频读取、推理处理和结果展示的基础工具包。
注:也就是说 requirements.txt
文件里面有的是我们需要的包的名称
启动视频检测程序:python videostream.py
程序启动后读取前端传入的视频流URL;
使用 OpenCV 打开并捕捉摄像头视频帧;
利用 Ultralytics YOLOv8 模型对每帧图像进行目标识别;
检测结果用边框标记并通过 FFmpeg 将带有标记的视频推流至 RTMP 服务器;
前端页面通过 RTMP 地址接收处理后的视频,实现实时目标检测展示。
问题2:
问题2:该界面下,在正常连接的情况下,出现报错,视频流存在问题,红框中摄像不亮,没有画面


解决方法:前面的配置存在问题,导致链雾系统无法检测到摄像机存在,可以通过ping进行调试,最终发现该步骤一开始ip地址有问题。

正确修改后解决,属于失误型错误:

8.总结与体会
虽然本次实验整体流程和实验5.5类似,甚至提供了比较完整的YOLO运行代码,但实际做下来还是挺震撼的。特别是当我看到摄像头画面中出现目标并被自动识别、标注出来的时候,真切感受到这类算法在现实中的应用价值远比之前做的串口通信要"立体"得多。
实验中,借助琏雾系统搭好了从视频采集到识别再到展示的完整流程,前端和后端的配合也比较顺畅。更重要的是,它让我意识到:YOLO识别的结果并不只是之前视频流的"看一看"那么简单,而是识别出对的信息,这样的话,其实哦我们只要加一段判断逻辑,把检测到的目标结果转换成命令发送到物联网的其他设备(比如像实验5.4中给电参表发指令),那我们就能构建一个自动响应、智能处理的完整系统。
总的来说,这次实验让我真正体会到了"传感-识别-响应"这条物联网链条在图像识别场景下是如何联动起来的,也让我更清晰地理解了物联网系统如何从"信息采集"走向"智能决策"的。