0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微(EASY EAI)RV1126B 人员检测方案

广州灵眸科技有限公司 2026-04-14 16:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 方案简介

本方案将演示如何利用EASY-EAI-Nano-TB以及MIPI-CSI摄像头制作一个【网络摄像头(IPCamera)】:两路MIPI-CSI摄像头分别单独输出两路流。

1.1 接线示意图

摄像头与板卡连接:

v2-bcbd64499ffe0bba3f40e6440b8eec0a_720w.webpv2-2943e615f4175788d9a791c69b32770f_720w.webp

* 接线必须在断电时进行操作。

* 采用反向线连接IMX415摄像头与Cmaera1接口。(注意:用错线会烧坏摄像头或者核心板,因此在接线时务必要小心。)

* 接线端子卡扣与FPC线的蓝色塑料标识必须位于同一侧。如下图所示。

v2-4f28fcae2f5904b0f29003a06e483e64_720w.webp

EASY EAI Nano-TB默认搭配IMX415单目摄像头。同时配有一根0.5mm间距的40pin FPC反向线

反向线:两端的蓝色标识不在同一侧面。

同向线:两端的蓝色标识处于同一侧面。

v2-47798b45ee74939a2bff6cccdf971d0f_720w.webp

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh 2204

v2-d82ad9d6fcb0b4ea2e03a6516c5b6e63_720w.webp

2.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

v2-67d8e73ccfe13280db05364195d1679f_720w.webp

注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Toolkit-1126B/Solutions/detect-Person ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

v2-8be18d1e357df1f4b249ed4561599c1f_720w.webp

2.3 模型部署

要想开发实例能够顺利执行,还需要先下载人员检测算法模型。

百度网盘链接为:https://pan.baidu.com/s/1ds5ffznYnhtj1S6cXvjdVg?pwd=1234 (提取码:1234 )。

v2-48029dca837105de437913a1fdf4409f_720w.webp

同时需要把下载的人脸检测算法模型复制粘贴到Release/目录:

v2-a437f9d4bc7a29c5a8b314a03556cbd9_720w.webp

再执行一次编译(这次要带上cpres,代表把资源文件也拷过去板卡):

./build.sh cpres

2.4 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata/Solu/detect-Person

v2-cf39c6ac4d7b455990748c441f5deae8_720w.webp

运行例程命令如下所示。

./detect-Person 23

v2-cd97ee8c2d5d59ca60c51ab5768210c4_720w.webp

屏幕显示效果如下:

v2-012c0f53106dab1136035327d6415873_720w.webp

3. 代码解析

方案主逻辑代码位于:EASY-EAI-Toolkit-1126B/Solution/detect-Person/src/main.cpp。代码实现主要通过调用我司的easyeai-api库快速实现人员检测功能,代码主体分为主线程和算法

3.1 组件库组成

要实现人员检测功能,需要使用到easyeai-api库的以下组件,如下所示。

v2-a9aac64ad1c8fbcee8d6767a45cf8213_720w.webp

模组信息如下所示。

v2-8e3f1f7e389bff2a33b11797b7a4478b_720w.webp

这些组件通过CMakeLists.txt编译进工程,具体请看后续章节。

3.2 逻辑框图

项目的整体逻辑框图如下所示。

v2-d2cb5eeb7f6f0334840c72c7e7c1163c_720w.webp

3.3 主线程

主线程处理的业务有:

l 初始化外设;

l 创建算法分析子线程;

l 抓图发送给到子线程;

l 抓图、显示;

本处附上主要的逻辑功能代码,其他辅助的、校验型的代码先忽略。

初始化显示屏,如下所示。

// 1.初始化显示屏 int width, height; if (disp_init(&width, &height) < 0) { fprintf(stderr, "DRM初始化失败\n"); return -1;

组件初始化操作如下,本处调用mipi摄像头。

// 2.打开摄像头 #define CAMERA_WIDTH 1920 #define CAMERA_HEIGHT 1080 #define IMGRATIO 3 #define IMAGE_SIZE (CAMERA_WIDTH*CAMERA_HEIGHT*IMGRATIO) int cameraIndex = atoi(argv[1]); ret = mipicamera_init(cameraIndex, CAMERA_WIDTH, CAMERA_HEIGHT, 0); if (ret) { printf("error: %s, %d\n", __func__, __LINE__); goto exit3; } pbuf = (char *)malloc(IMAGE_SIZE); if (!pbuf) { printf("error: %s, %d\n", __func__, __LINE__); ret = -1; goto exit2; }

创建线程斥锁以及线程,如下所示。

// 3.创建识别线程,以及图像互斥锁 pthread_mutex_init(&img_lock, NULL); pResult = (Result_t *)malloc(sizeof(Result_t)); memset(pResult, 0, sizeof(Result_t)); if(0 != CreateNormalThread(detect_thread_entry, pResult, &mTid)){ free(pResult); }

抓取图像,调用clone操作。

// 4.1、取流 pthread_mutex_lock(&img_lock); ret = mipicamera_getframe(cameraIndex, pbuf); if(ret) { printf("error: %s, %d\n", __func__, __LINE__); pthread_mutex_unlock(&img_lock); continue; } algorithm_image = Mat(CAMERA_HEIGHT, CAMERA_WIDTH, CV_8UC3, pbuf); image = algorithm_image.clone(); pthread_mutex_unlock(&img_lock);

调用显示图像,将分析的目标位置通过Result标记出来。

// 4.2、显示 char text[256]; for (int i = 0; i < Result.algoRes[0].resNumber; i++) { detect_result_t *det_result = &(Result.algoRes[0].detect_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(image, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(255, 0, 0, 255), 3); putText(image, text, cv::Point(x1, y1 + 12), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0)); */ plot_one_box(image, x1, x2, y1, y2, text, i%10); } disp_commit(image.data, CAMERA_WIDTH, CAMERA_HEIGHT, HAL_TRANSFORM_ROT_270);

3.4 算法分析子线程

算法分析子线程,主要完成以下操作:

l 延时监测是否图像缓冲区是否为空;

l 不为空时,证明主函数已发送图像数据过来,线程执行图像获取操作;

l 调用人员分析函数;

l 记录目标框的数据,用于后续图像合成操作;

延时监测是否有图像,操作如下所示。

if(algorithm_image.empty()) { usleep(5); continue; }

获取图像操作如下所示。

pthread_mutex_lock(&img_lock); image = algorithm_image.clone(); pthread_mutex_unlock(&img_lock);

调用人员检测函数,算法得到的目标结果记录于pResult的algoRes[0]成员内,如下所示。

// 算法分析 ret = person_detect_run(ctx, image, &pResult->algoRes[0].detect_Group);

4. 开发指南

4.1 Toolkit仓库介绍

v2-535216781c03d14a9150da5e11f965b7_720w.webp

4.2 示例文件&目录结构

4.2.1 开发实例介绍

每个开发实例就是一个独立的项目,项目使用cmake构建自动编译部署。一个最简单的项目至少要包含以下元素:build.sh、CMakeLists.txt、main.c,如下所示。

v2-40eab7857ac8f9692fd77f98187bf5d0_720w.webp

具体介绍如下所示。

v2-7c03be41417721629a7685cfff00b58b_720w.webp

4.2.2 可拓展的目录

可拓展的目录是指:开发过程中增加某些功能模块,功能代码。增加模式分为两种:

l 增加已编译的第三方库,在include、libs目录内添加头文件和库文件;

l 增加用户自定义的功能模块,推荐在src目录内增加;

具体情况如下所示,第三方模块相关的文件由include/3rd_model/xxx.h、libs/3rd_model/xxx.a。自定义的功能模块为src/mySrcCode、src/mySrcCode2。

v2-63e850dc736ee24422887058ab301197_720w.webp

4.3 CMakeLists.txt文件解析

4.3.1 编译环境配置部分:

第一部分为配置部分,配置部分如下所示。(获取当前方案目录、配置工具链、提取方案名称):

v2-505d01dc6da1eeb1826829a21415a78e_720w.webp

配置信息如下所示。

4.3.2 easyeai-api配置部分

第二部分是引入我司的功能组件库(针对当前方案进行:配置EASY EAI API头文件目录${XXX_INCLUDE_DIRS}、源码文件目录${XXX_SOURCE_DIRS}以及所依赖的库参数${XXX_LIBS}):

v2-1a586e8aa8c42eb9f605e7c30c2ba0a1_720w.webp

配置信息如下所示。

v2-5bba0434dd79579d50a62b9395db31f1_720w.webp

4.3.3 第三方库配置部分

第三部分配置第三方的库(针对当前方案进行:配置第三方头文件目录、库文件目录、配置第三方库链接参数以及配置源码目录):

v2-3567587bff807046edff9a72665273f8_720w.webp

配置信息如下所示。

v2-7b1fff9ac3054c0b2ee1c19d4abfd000_720w.webp

例如添加个人库的目录组成方式如下所示。

v2-44affac8a79404ce5310580e8e0177c6_720w.webp

aux_source_directory的修改方式为:

aux_source_directory(./src ./src/mySrcCode ./src/mySrcCode2 dir_srcs)

aux_source_directory(./src dir_srcs) aux_source_directory(./src/mySrcCode dir_srcs) aux_source_directory(./src/mySrcCode2 dir_srcs)

4.3.4 本方案配置部分

第四部分配置项目的编译信息,内容如下所示:

v2-7df7ec3f43cbf26bffc065e746fd7aca_720w.webp

配置项如下所示。

4.4 build.sh编译脚本:

4.4.1 路径定位部分

第一部分用于提取目录用于编译操作,内容如下所示:(进入build.sh脚本所在目录,并且提取当前目录绝对路径,提取当前目录名称)

v2-ebc3200c2ff434c2ca65732c2dbb27f4_720w.webp

4.4.2 清除编译部分

第二部分清除操作,清除目录为build、Release,内容如下所示:(执行build.sh脚本时,带入了参数“clear”,则清空编译输出)

v2-6fbc2c6a137528735106f49c0ff37e44_720w.webp

4.4.3 编译操作

第三部分,编译直接调用cmake,内容如下所示:(重新编译,成部署目录,并把资源自动部署进板卡)

v2-95215c3c665db080f170799f7276b695_720w.webpv2-917f071f38e689ca85266d2895543bc4_720w.webp
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1819

    文章

    50290

    浏览量

    266828
  • 开发板
    +关注

    关注

    26

    文章

    6405

    浏览量

    120542
  • 瑞芯微
    +关注

    关注

    27

    文章

    841

    浏览量

    54647
  • EASY-EAI灵眸科技

    关注

    4

    文章

    95

    浏览量

    3720
  • RV1126B
    +关注

    关注

    0

    文章

    83

    浏览量

    240
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    (EASY EAI)RV1126B 音频输入

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 12-18 13:41 2547次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输入

    (EASY EAI)RV1126B PWM使用

    1.PWM简介1.1开发板PWM资源1.2查找PWM节点rv1126b的pwm资源表如下:【PWM1CH0】对应的是pwm1_4ch_0,寄存地址为20700000。【PWM1CH1】对应
    的头像 发表于 01-06 10:49 8155次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音频输出

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 04-01 17:13 8495次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输出

    EASY EAI Nano-TB(RV1126B)开发板试用】+初识篇

    Nano-TB是灵眸科技研发的一款应用于AIoT领域的开发板,它基于RV1126B处理器,集成了4个Cortex-A53及独立的NEON协处理器,它支持4K@30fps的H.
    发表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-灯闪

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】开箱测评 https://pan.baidu.com/s/15pnbJXPN5TrfV2KfsKaZyQ?pwd=1234 打开
    发表于 11-01 21:26

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】通过wifi连接,使用ssh登录EASY EAI Nano-TB(
    发表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B
    发表于 11-03 10:00

    EASY EAI Nano-TB(RV1126B)开发板试用】+1、开箱上电

    ,避免因接触不良导致显示或采集异常。 2 硬件解析:强劲AI核心与丰富接口 2.1 核心处理器性能 EASY EAI Nano-TB开发板的核心基于
    发表于 11-19 21:39

    EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    ,并介绍了系统镜像安装部署的相关流程。 介绍 EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。 核心板基于
    发表于 12-23 18:05

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心板
    的头像 发表于 09-04 10:50 5073次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升级差异

    【免费试用】EASY EAI Nano-TB(RV1126B)开发套件评测

    EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。核心板基于RV1126B处理器设计,并引入了新
    的头像 发表于 09-23 08:09 1228次阅读
    【免费试用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)开发套件评测

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架构AI视觉芯片,搭载4核Cortex-A53与自研3Tops算力NPU。全面替代上一代的
    的头像 发表于 10-09 11:22 2127次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架构AI视觉芯片RV1126B,是否替换RV1126,CPU性能是挤牙膏还是大突破。带着这些核
    的头像 发表于 12-11 17:13 2505次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人员检测使用

    1.人员检测简介人员检测是一种基于深度学习的对人进行检测定位的目标检测,能广泛的用于安防、生产安
    的头像 发表于 01-11 14:30 3118次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> <b class='flag-5'>人员</b><b class='flag-5'>检测</b>使用

    (EASY EAI)RV1126B 人体关键点识别

    的特点。本人员检测算法在数据集表现如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的运行效率:17个人体关键点索引定义:2.快速上手2.1开发
    的头像 发表于 01-23 10:13 3477次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人体关键点识别