RV1126 基于 rockx 实现的 isp 摄像头动态识别 demo

本帖最后由 799959745 于 2021-11-19 14:36 编辑

rockx 可以说是最简单上手模型。目前写了一些好玩的模型应用,识别效果也都还不错。有兴趣的朋友可以上手玩玩。SDK 代码仓库已经更新。想玩的朋友可以直接按照教程上手。

# 使用手册

  • demo 目前只支持 CORE-1126-JD4/CORE-1109-JD4 板型。不支持智能双目摄像头模组 CAM-C1126S2U/CAM-C1109S2U

编译 mk 文件选择

./build.sh device/rockchip/rv1126_rv1109/aio-rv1126-xhlpr.mk
  • 由于默认 mk 文件会自动编译 XHLPR_APP 车牌识别。对应的 buildroot 配置文件 sdk/buildroot/configs/firefly_rv1126_rv1109_xhlpr_defconfig
    如不需要 XHLPR_APP 请保证 buildroot/configs/firefly_rv1126_rv1109_xhlpr_defconfig 已经关闭 XHLPR_APP 编译配置
BR2_PACKAGE_XHLPR_APP=n
  • 请保证 buildroot 已经打开以下配置
# OPENCV3
BR2_PACKAGE_OPENCV3=y
BR2_PACKAGE_OPENCV3_LIB_CALIB3D=y
BR2_PACKAGE_OPENCV3_LIB_FEATURES2D=y
BR2_PACKAGE_OPENCV3_LIB_FLANN=y
BR2_PACKAGE_OPENCV3_LIB_HIGHGUI=y
BR2_PACKAGE_OPENCV3_LIB_IMGCODECS=y
BR2_PACKAGE_OPENCV3_LIB_IMGPROC=y
BR2_PACKAGE_OPENCV3_LIB_ML=y
BR2_PACKAGE_OPENCV3_LIB_OBJDETECT=y
BR2_PACKAGE_OPENCV3_LIB_PHOTO=y
BR2_PACKAGE_OPENCV3_LIB_SHAPE=y
BR2_PACKAGE_OPENCV3_LIB_STITCHING=y
BR2_PACKAGE_OPENCV3_LIB_SUPERRES=y
BR2_PACKAGE_OPENCV3_LIB_TS=y
BR2_PACKAGE_OPENCV3_LIB_VIDEOIO=y
BR2_PACKAGE_OPENCV3_LIB_VIDEO=y
BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB=y
BR2_PACKAGE_OPENCV3_WITH_FFMPEG=y
BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1=y
BR2_PACKAGE_OPENCV3_WITH_JASPER=y
BR2_PACKAGE_OPENCV3_WITH_JPEG=y
BR2_PACKAGE_OPENCV3_WITH_PNG=y
BR2_PACKAGE_OPENCV3_WITH_PROTOBUF=y
BR2_PACKAGE_OPENCV3_WITH_TIFF=y
BR2_PACKAGE_OPENCV3_WITH_V4L=y
BR2_PACKAGE_OPENCV3_WITH_WEBP=y

# firefly_rockx_demo
BR2_PACKAGE_FIREFLY_ROCKX_DEMO=y
  • 编译(回到 sdk 根目录执行)
./build.sh buildroot
  • 文件系统更新
    文件系统固件路径:sdk/rockdev/rootfs.img
烧录命令:
upgrade_tool di -rootfs rockdev/rootfs.img

更多有关 buildroot 系统相关的资料与教程请移步:https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/buildroot_develop.html。这里就不再赘述。

  • PC Linux vlc 软件预览识别画面。需要将设备 ip 对应到链接。
vlc rtsp://<设备ip>:8554/H264_stream_0
  • 可直接在浏览器输入设备 ip 即可预览识别画面(由于播放器的原因,可能会有些许卡顿)。默认账号和密码登录网页:
账号:admin
密码:admin
  • 修改识别分辨率为 2K。修改文件 rockx_app.cfg :
修改前:c:activation_conf_path=/usr/share/firefly_rockx_demo/licSever/activation.conf licSever_path=/usr/share/firefly_rockx_demo/licSever VideoNode=rkispp_scale1 VideoType=6 EnImageType=4 EnVideoWidth=1920 EnVideoHeight=1080 InImageType=4 OutImageType=18 InVideoWidth=720 InVideoHeight=576 OutVideoWidth=720 OutVideoHeight=576

修改后:c:activation_conf_path=/usr/share/firefly_rockx_demo/licSever/activation.conf licSever_path=/usr/share/firefly_rockx_demo/licSever VideoNode=rkispp_scale1 VideoType=6 EnImageType=4 EnVideoWidth=1920 EnVideoHeight=1080 InImageType=4 OutImageType=18 InVideoWidth=2688 InVideoHeight=1520 OutVideoWidth=2688 OutVideoHeight=1520
  • 请确保 VI 接口(摄像头)没有被占用。请尝试执行:RkLunch-stop.sh 关闭摄像头服务。
  • 手动参考示例执行 demo。或根据需求修改以下脚本然后执行启动。
# 默认启动车牌识别
/usr/share/firefly_rockx_demo/start_rockx_app.sh
  • 手动执行示例 demo 则需要手动执行网页推流(不执行则网页无法预览识别结果)
# 只推流视频命令
ffmpeg -f rtsp -rtsp_transport tcp -i "rtsp://127.0.0.1:8554/H264_stream_0" -c  copy -f flv "rtmp://127.0.0.1/live/mainstream" &

# 同时推流视频和音频命令(目前只有运行示例 rockx_face_attribute 的 rockx_face_attribute_aenc_venc_rtsp_service 能执行以下命令)
ffmpeg -f rtsp -rtsp_transport tcp -i "rtsp://127.0.0.1:8554/H264_stream_0" -i "rtsp://127.0.0.1:8555/audio_stream_0" -c  copy -f flv "rtmp://127.0.0.1/live/mainstream" &

# 示例

  • rockx_carplate
    # 说明
  • 车牌识别
    # 代码路径
  • app/firefly_rockx_demo/
    # 快速使用
rockx_carplate_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_carplate_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_attribute_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_attribute_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_attribute_aenc_venc_rtsp_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_attribute_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &

# ffmpeg 命令需要修改成以下命令
ffmpeg -f rtsp -rtsp_transport tcp -i "rtsp://127.0.0.1:8554/H264_stream_0" -i "rtsp://127.0.0.1:8555/audio_stream_0" -c  copy -f flv "rtmp://127.0.0.1/live/mainstream" &
rockx_face_landmark_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_landmark_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_masks_detection_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_masks_detection_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &

戴口罩

  • rockx_face_recognition
    # 说明
  • 人脸识别,需要手动输入图片。图片名字即识别显示 id。不支持中文 id 显示。
    # 代码路径
  • app/firefly_rockx_demo/
    # 快速使用
rockx_face_recognition_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_face_recognition_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg -i /path/to/id.jpg &

识别成功

  • rockx_head_detection
    # 说明
  • 人头检测
    # 代码路径
  • app/firefly_rockx_demo/
    # 快速使用
rockx_head_detection_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_head_detection_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_object_track_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_object_track_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_person_detection_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_person_detection_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_pose_body_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_pose_body_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &

  • rockx_pose_finger
    # 说明
  • 手指关键点定位
    # 代码路径
  • app/firefly_rockx_demo/
    # 快速使用
rockx_pose_finger_service -c /usr/share/firefly_rockx_demo/rockx_app.cfg &
rockx_pose_finger_client -c /usr/share/firefly_rockx_demo/rockx_app.cfg &

赞, 楼主颜值爆表, 希望以后多发干货, 顺便多爆照哈.

build fail, 我用的rv1126_rv1109_linux_ai_camera_release REPO_SDK 软件包。
2021-09-22T15:53:09 ERROR: /opt/ws/AI_UVC_CAM-CRV1126S2U/buildroot/../app/rkaiq_switch_mode does not exist

请问您用的下面哪个软件包呢?
如果需要开发Facial_Gate类型应用请下载 rv1126_rv1109_linux_release REPO_SDK 软件包,

repo init  --no-clone-bundle --repo-url https://gitlab.com/firefly-linux/git-repo.git -u https://gitlab.com/firefly-linux/manifests.git -b master -m rv1126_rv1109_linux_release.xml --no-repo-verify

如果需要开发AI_UVC应用请下载 rv1126_rv1109_linux_ai_camera_release REPO_SDK 软件包。

repo init  --no-clone-bundle --repo-url https://gitlab.com/firefly-linux/git-repo.git -u https://gitlab.com/firefly-linux/manifests.git -b master -m rv1126_rv1109_linux_ai_camera_release.xml --no-repo-verify

ubuntu 发表于 2021-9-22 17:06
build fail, 我用的rv1126_rv1109_linux_ai_camera_release REPO_SDK 软件包。
2021-09-22T15:53:09 ERR …

仔细看一下说明:不支持智能双目摄像头模组 CAM-C1126S2U/CAM-C1109S2U。
应该使用rv1126_rv1109_linux_release

收到, 谢谢.

我也遇到同样的问题了,按照wiki的提示编译固件提示进行的,然后编译时候说找不到/apprkaiq_switch_mode。这个怎么解呢?

ubuntu 发表于 2021-9-23 14:18
收到, 谢谢.

这个问题,你那里解决了吗?现在默认就是带这个ai的,但是app里却没有更新到。

leo99 发表于 2021-9-23 16:01
我也遇到同样的问题了,按照wiki的提示编译固件提示进行的,然后编译时候说找不到/apprkaiq_switch_mode。 …

用rv1126_rv1109_linux_release.xml编译就不会出问题

799959745 发表于 2021-9-23 16:06
用rv1126_rv1109_linux_release.xml编译就不会出问题

您好,谢谢回复。我是国内用户,使用的是【Docs » 源码编译】方式一进行sdk更新的,没有您说的这个文件呢?https://wiki.t-firefly.com/zh_CN/CORE-1126-JD4/Source_code.html


更新一下

799959745 发表于 2021-9-24 08:52
更新一下

好的,重新更新了一遍,这个问题没有了。{:4_192:}

学习一下

好资料。

前来围观大佬

本帖最后由 czx 于 2021-11-18 12:13 编辑

编译源码的时候报错这个{:4_126:}
CMake Error at CMakeLists.txt:33 (find_package):
Could not find a configuration file for package “MiniLogger” that is
compatible with requested version “”.

学习…

请问这个demo可以用usb摄像头实现吗

leolee 发表于 2021-12-24 11:04
请问这个demo可以用usb摄像头实现吗

代码是针对isp摄像头的。如果要用usb摄像头,需要自己修改代码实现。

本帖最后由 东逝之水 于 2022-1-8 16:24 编辑

我是严格按照文档操作的。但是编译出现如下问题。
我使用的是C40PL机器。sdk也是对应地址下载的。执行./build.sh aio-rv1126-jd4.mk后可以编译。执行aio-rv1126-xhlpr.mk,就出现如下错误。

2022-01-08T16:02:19 rockx_client.cpp:(.text+0xba0): undefined reference to `CARPLATE_RECOG_CODE’
2022-01-08T16:02:19 collect2: error: ld returned 1 exit status
2022-01-08T16:02:19 CMakeFiles/rockx_client.dir/build.make:120: recipe for target ‘rockx_client’ failed
2022-01-08T16:02:19 make[4]: *** [rockx_client] Error 1
2022-01-08T16:02:19 CMakeFiles/Makefile2:141: recipe for target ‘CMakeFiles/rockx_client.dir/all’ failed
2022-01-08T16:02:19 make[3]: *** [CMakeFiles/rockx_client.dir/all] Error 2
2022-01-08T16:02:19 Makefile:129: recipe for target ‘all’ failed
2022-01-08T16:02:19 make[2]: *** [all] Error 2
2022-01-08T16:02:19 package/pkg-generic.mk:228: recipe for target ‘/home/rv1126/rv1126_camera/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109_xhlpr/build/xhlpr_app-1.0/.stamp_built’ failed
2022-01-08T16:02:19 make[1]: *** [/home/rv1126/rv1126_camera/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109_xhlpr/build/xhlpr_app-1.0/.stamp_built] Error 2
2022-01-08T16:02:19 /home/rv1126/rv1126_camera/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109_xhlpr/Makefile:16: recipe for target ‘_all’ failed
2022-01-08T16:02:19 make: *** [_all] Error 2
Command exited with non-zero status 1

请问更新了 SDK 没?需要将 SDK 更新到最新。
如果已经更新到最新。cat /proc/version看一下信息。