瑞芯微RV1126B开发板(EASY-EAI-PI2) 火焰检测 1. 火焰检测简介火焰检测是一种基于深度学习的对火焰进行检测定位的目标检测。基于大规模火焰数据识别训练配合摄像头实时识别监控区内明火情况立刻发出警报提醒监控室查看及时止损。本火焰检测算法在数据集表现如下所示基于EASY-EAI-PI2硬件主板的运行效率2. 快速上手2.1 开发环境准备如果您初次阅读此文档请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》并按照其相关的操作进行编译环境的部署。在PC端Ubuntu系统中执行run脚本进入EASY-EAI编译环境具体如下所示。cd ~/develop_environment ./run.sh 22042.2 源码下载在EASY-EAI编译环境下创建存放源码仓库的管理目录cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit通过git工具在管理目录内克隆远程仓库git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git注* 此处可能会因网络原因造成卡顿请耐心等待。* 如果实在要在gitHub网页上下载也要把整个仓库下载下来不能单独下载本实例对应的目录。2.3 模型部署要完成算法Demo的执行需要先下载火焰检测算法模型。百度网盘链接为https://pan.baidu.com/s/11hAoFKprLXvH98M_iQh6vQ?pwd1234 提取码1234 。同时需要把下载的火焰检测算法模型复制粘贴到Release/目录2.4 例程编译进入到对应的例程目录执行编译操作具体命令如下所示cd EASY-EAI-Toolkit-1126B/Demos/algorithm-fire/ ./build.sh cpres注* 由于依赖库部署在板卡上因此交叉编译过程中必须保持/mnt挂载。* 若build.sh脚本带有cpres参数则会把Release/目录下的所有资源都拷贝到开发板上。2.5 例程运行及效果通过串口调试或ssh调试进入板卡后台定位到例程部署的位置如下所示cd /userdata/Demo/algorithm-fire/运行例程命令如下所示sudo ./test-fire_detect fire_detect.model test.jpg在EASY-EAI编译环境可以取回测试图片:cp /mnt/userdata/Demo/algorithm-fire/result.jpg .结果图片如下所示API的详细说明以及API的调用本例程源码详细信息见下方说明。3. 火焰检测API说明3.1 引用方式为方便客户在本地工程中直接调用我们的EASY EAI api库此处列出工程中需要链接的库以及头文件等方便用户直接添加。3.2 火焰检测初始化函数火焰检测初始化函数原型如下所示。int fire_detect_init(rknn_context *ctx, const char * path)具体介绍如下所示。3.3 火焰检测运行函数火焰检测运行函数fire_detect_run原型如下所示。int fire_detect_run(rknn_context ctx, cv::Mat input_image, person_detect_result_group_t *detect_result_group)具体介绍如下所示。3.4 火焰检测释放函数火焰检测释放函数原型如下所示。int fire_detect_release(rknn_context ctx)具体介绍如下所示。4. 火焰检测算法例程例程目录为Demos/algorithm-fire/test-fire_detect.cpp操作流程如下。参考例程如下所示。#include opencv2/opencv.hpp #include stdio.h #include sys/time.h #includefire_detect.h using namespace cv; using namespace std; static Scalar colorArray[10]{ Scalar(255, 0, 0, 255), Scalar(0, 255, 0, 255), Scalar(0,0,139,255), Scalar(0,100,0,255), Scalar(139,139,0,255), Scalar(209,206,0,255), Scalar(0,127,255,255), Scalar(139,61,72,255), Scalar(0,255,0,255), Scalar(255,0,0,255), }; int plot_one_box(Mat src, int x1, int x2, int y1, int y2, char *label, char colour) { int tl round(0.002 * (src.rows src.cols) / 2) 1; rectangle(src, cv::Point(x1, y1), cv::Point(x2, y2), colorArray[(unsigned char)colour], 3); int tf max(tl -1, 1); int base_line 0; cv::Size t_size getTextSize(label, FONT_HERSHEY_SIMPLEX, (float)tl/3, tf, base_line); int x3 x1 t_size.width; int y3 y1 - t_size.height - 3; rectangle(src, cv::Point(x1, y1), cv::Point(x3, y3), colorArray[(unsigned char)colour], -1); putText(src, label, cv::Point(x1, y1 - 2), FONT_HERSHEY_SIMPLEX, (float)tl/3, cv::Scalar(255, 255, 255, 255), tf, 8); return 0; } int main(int argc, char **argv) { if (argc ! 3) { printf(%s model_path image_path\n, argv[0]); return -1; } const char *model_path argv[1]; const char *image_path argv[2]; /* 参数初始化 */ detect_result_group_t detect_result_group; /* 算法模型初始化 */ rknn_context ctx; fire_detect_init(ctx, model_path); /* 算法运行 */ cv::Mat src; src cv::imread(image_path, 1); struct timeval start; struct timeval end; float time_use0; gettimeofday(start,NULL); fire_detect_run(ctx, src, detect_result_group); gettimeofday(end,NULL); time_use(end.tv_sec-start.tv_sec)*1000000(end.tv_usec-start.tv_usec);//微秒 printf(time_use is %f\n,time_use/1000); /* 算法结果在图像中画出并保存 */ // Draw Objects char text[256]; for (int i 0; i detect_result_group.count; i) { detect_result_t* det_result (detect_result_group.results[i]); if( det_result-prop 0.4) { continue; } sprintf(text, %s %.1f%%, det_result-name, det_result-prop * 100); printf(%s (%d %d %d %d) %f\n, det_result-name, det_result-box.left, det_result-box.top, det_result-box.right, det_result-box.bottom, det_result-prop); int x1 det_result-box.left; int y1 det_result-box.top; int x2 det_result-box.right; int y2 det_result-box.bottom; /* rectangle(src, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(255, 0, 0, 255), 3); putText(src, text, cv::Point(x1, y1 12), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0)); */ plot_one_box(src, x1, x2, y1, y2, text, i%10); } cv::imwrite(result.jpg, src); /* 算法模型空间释放 */ fire_detect_release(ctx); return 0; }

相关新闻

最新新闻

2026 集团管理软件哪个品牌好?选对系统,管理效率翻倍

2026 集团管理软件哪个品牌好?选对系统,管理效率翻倍

你是不是也有这些困惑?"子公司报上来的数据和总部对不上""每个月合并报表要花两周""预算定了就没人管,超了才知道"……如果你是集团企业的管理者,这些问题是不是特别耳熟?2026年,集团企…

2026/8/25 20:55:07
EnvHarness 把静态环境「套个壳」就 +9 分:Google 让 Agent 训练场自己会进化

EnvHarness 把静态环境「套个壳」就 +9 分:Google 让 Agent 训练场自己会进化

EnvHarness 把静态环境「套个壳」就 9 分:Google 让 Agent 训练场自己会进化 Hugging Face 每日论文(2026-08-21 精选) AI 智能体在游戏与网页里点来点去看似热闹,背后其实一直被一个老问题卡住——训练用的那些环境是「一次写死、…

2026/8/25 20:55:07
项目管理软件哪个好?别被排行榜骗了,3 个真实数据讲透选型

项目管理软件哪个好?别被排行榜骗了,3 个真实数据讲透选型

全文约 700 字,阅读约 2 分钟。 重点内容:没有"最好"的项目管理软件,只有适配你的。Worktile 2024 调研 87 家采购企业,54% 买后 12 个月还在用,仅 21% 全员活跃;PMI 2023 报告 62% 系统失败源于…

2026/8/25 20:55:07
LeetCode 热题 100

LeetCode 热题 100

目录 哈希 1. 两数之和 49. 字母异位词分组 128. 最长连续序列 双指针 283. 移动零 链表 2. 两数相加 哈希 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数…

2026/8/25 20:55:07
一体化全域底盘赛道升温,本土供应链的机会在哪儿?

一体化全域底盘赛道升温,本土供应链的机会在哪儿?

高阶智驾的规模化普及,正在倒逼底盘走向一体化协同。高工智能汽车研究院监测数据显示:2026年1-6月,中国市场(不含进出口)乘用车前装标配NOA车型交付290.82万辆,同比增长51.23%。随着智能驾驶能力持续提升&a…

2026/8/25 20:55:07
从 0 到 1:跨境电商 AI 翻译工具的技术方案全拆解(LLM + 本地化 + 合规)

从 0 到 1:跨境电商 AI 翻译工具的技术方案全拆解(LLM + 本地化 + 合规)

从 0 到 1:跨境电商 AI 翻译工具的技术方案全拆解(LLM 本地化 合规)正文 一、为什么做这个 先说结论:通用翻译是红海,但"懂电商规则的本地化"还是蓝海。 跨境卖家的真实痛点不是"翻译不通顺"——…

2026/8/25 20:50:07