基于LVGL9.0、FFmpeg、OpenCV的Linux智能家居监控安防系统(含演示视频)

介绍

智能家居监控安防系统是一个集成监控、安防、人脸识别、环境监测、家居控制的一体化系统。

它包含5大模块,分别是:

  • 视频监控:支持查看摄像头、拍照、录像、直播和检测到人体时自动拍照,支持同时开启或单个开启,支持浏览图片和视频文件;
  • 人脸识别:人脸前后比对检测,模拟人脸识别开门的场景;
  • 报警设置:检测到人体时自动报警,通过蜂鸣器模拟报警;
  • 环境检测:当前环境的温湿度检测,通过MQTT协议通信;
  • 家居控制:通过MQTT协议控制LED灯,模拟真实家居控制场景;

硬件层面

IMX6ULL开发板、1024×600 LCD、摄像头、DHT11温湿度传感器、SR501人体红外传感器、蜂鸣器。

在这里插入图片描述

软件层面

技术栈

用户空间库:FFmpeg libav*、OpenCV、paho.mqtt.cpp

网络协议:MQTT、RTSP、WebRTC

流媒体服务器:mediamtx

MQTT broker:mosquitto

GUI:LVGL

编程语言:C++

项目构建:CMake

驱动程序

在Linux系统中,要操控硬件,需要编写对应的驱动程序,应用程序通过字符设备文件与之对应的驱动程序进行通信,实现对硬件的控制。

本项目开发了如下 Linux 驱动程序:

  • DHT11温湿度驱动程序
  • LED驱动程序
  • 蜂鸣器驱动程序
  • SR501人体红外感应驱动程序

应用程序

应用程序分为4个,用于模拟真实的MQTT通信场景,分别如下:

  • 主程序:实现相关功能,并通过MQTT协议与其他应用程序进行通信;
  • LED应用程序:订阅 led 主题,当接收到相关指令是进行远程开关灯操作;
  • DHT11应用程序:订阅 dht11 和 dht11_read 主题,当接收到 dht11_read 主题时,读取温湿度,并通过 dht11 主题发送读取到数据;
  • SR501应用程序:当监测到人体时,发送 sr501 主题告知其他客户端;

项目设计

  • 视频监控采用多线程架构,分为捕获视频帧线程、转换线程、处理线程,通过互斥量和条件变量实现线程间的同步,提升并发性。
  • 使用双缓冲实现摄像头的显示,避免出现屏幕闪烁的情况。使用队列数据结构实现录像、直播对帧的处理,确保每一帧都得到处理。
  • 对 LVGL 进行 class 封装,采用链式调用的设计模式,实现 GUI 模块的快速开发。

可优化项

  • 加入onvif,实现 IPC(网络摄像机)功能;
  • 更换芯片,使用瑞芯微或海思芯片,使用MPP库进行编解码处理,利用硬件特性提升编解码速度;利用NPU加速提升识别算法速度,做到实时识别;
  • 将视频编码格式从H.264切换到H.265,提升压缩率;
  • 目前流媒体服务器部署在主机,可用live555等其他流媒体服务器,部署到开发板上,解耦;

演示视频

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值