Firefly开源社区

标题: Firefly Cluster Server R1 多路人脸识别教程 [打印本页]

作者: 799959745    时间: 2021-12-27 11:29
标题: Firefly Cluster Server R1 多路人脸识别教程
本帖最后由 799959745 于 2022-2-9 08:56 编辑

多路人脸识别解决方案简介
  Firefly 多路人脸识别解决方案,可以给多个普通网络摄像头赋予 AI 分析能力,能应用在人脸识别、车牌识别、手势识别等场景。
  该方案通过把 Cluster Server R1 集群服务器与 20 个摄像头接入到同一个路由器/交换机,利用集群服务器强大的视频编解码能力和高效的人脸识别算法,可对 20 个摄像头的视频数据进行采集和人脸分析,并且对分析结果和视频流进行合并、二次编译、推流和预览,实现对多路视频流的人脸识别。更多多路人脸识别解决方案介绍请看官方帖子:https://dev.t-firefly.com/thread-115162-1-1.html

环境准备
硬件准备

1、准备多个网络摄像头,确认其 rtsp 流链接地址,PC 使用 VLC 软件能正常预览。
2、Cluster Server R1 服务器。相关官方介绍链接:https://www.t-firefly.com/product/clusterserver.html?theme=pc。

3、将 PC 、多个网络摄像头和
Cluster Server R1 服务器接入同一个局域网。Cluster Server R1 服务器网口接法:网线接入 Cluster Server R1 服务器的 LAN1 口(从工作灯的正面看:从左往右数第二个网口)。

软件准备
Cluster Server R1 服务器简称 CS-R1 服务器,以下均以该命名进行介绍。
PC 系统版本:ubuntu18.04
CS-R1 主板 RK3399 使用的固件名称:
  1. CS-R1-3399-JD4-MAIN-UBUNTU-RK3399-SERVER_UBUNTU_18.04_DESKTOP-ARC-GPT-20211227-1409.img
复制代码
RK3399 固件获取:
  1. 链接:https://pan.baidu.com/s/1auLe7fquD4kcpmdXCEqyFg
  2. 提取码:1234
复制代码

该 RK3399 固件已经内置 RV1126 需要烧录的固件:CS-R1-1126-JD4-SUB-ARC-GPT-20211224-1654.img


CS-R1 子板 RV1126 使用的固件名称:
  1. CS-R1-1126-JD4-SUB-ARC-GPT-20211224-1654.img
复制代码
RV1126 固件获取:
  1. 链接:https://pan.baidu.com/s/1eYD0V0JrquvqV_uy8c6XkA
  2. 提取码:1234
复制代码

Qt 程序源码获取:
  1. #代码仓库拉取
  2. git clone -b firefly git@gitlab.com:firefly-linux/app/cs_rx_cam_arc.git
  3. #代码生成
  4. git submodule update --init
复制代码
cs_rx_cam_arc 仓库介绍:
  1. qt_rtsp_view:CS-R1 PC 端多路人脸识别客户端
  2. server_rk3399:CS-R1 RK3399 端多路人脸识别服务端
  3. server_rv1126:CS-R1 RV1126 端多路人脸识别服务端
复制代码
源代码编译平台说明(固件已经内置编译好了程序,以下仅是说明二次开发编译操作):
(1)qt_rtsp_view 在 PC 上编译。建议使用 Qt creator 进行编译。
(2)server_rk3399 在 RK3399 上编译。使用 ssh 登录到 CS-R1 的主板 RK3399。RK3399 的地址后面的步骤会介绍怎么获取。scp 拷贝文件夹到 RK3399。由于默认开机执行 server_rk3399 。所以需要 kill 掉再进行拷贝。
执行:
  1. cd cs_rx_cam_arc/server_rk3399
  2. /usr/lib/qt5/bin/qmake .
  3. make -j4
  4. killall server_rk3399
  5. cp server_rk3399 /home/firefly/
复制代码
注意:server_rk3399 程序必须放在 /home/firefly/ 执行。不能是绝对路径运行。需要按照以下流程执行:

  1. cd /home/firefly/
  2. ./server_rk3399 --platform vnc
复制代码


(3)server_rv1126 使用 buildroot 交叉工具进行编译。修改 server_rv1126/server_rv1126.pro 文件。将以下三个变量改成自己 sdk 所对应的工具路径。
  1. QMAKE_CC  = /home/lvsx/project/rv1126_8_6/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
  2. QMAKE_CXX = /home/lvsx/project/rv1126_8_6/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
  3. QMAKE_LINK = /home/lvsx/project/rv1126_8_6/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
复制代码
以上面的路径为例进行编译:

  1. cd cs_rx_cam_arc/server_rv1126/
  2. /home/lvsx/project/rv1126_8_6/buildroot/output/firefly_rv1126_rv1109_cs_r1_arc/host/bin/qmake ./
  3. make
复制代码
将生成的 server_rv1126 通过 scp 等方式拷贝到 CS-R1 上的 RV1126 上的 /userdata/ 路径
server_rv1126 程序必须放在 /userdata/ 执行。不能是绝对路径运行。需要按照以下流程执行:
  1. cd /userdata/
  2. ./server_rv1126 --platform vnc
复制代码
注意:RV1126 的 IP 地址后面的步骤会介绍怎么获取。


1、首次使用请用 PC 端接入 CS-R1 服务器的 TYPE-C 接口烧入 RK3399 固件。
注意:烧入完成之后请拔掉 PC 连接 CS-R1 服务器的 TYPE-C 线,否则软件无法发现子板设备。

2、安装 Qt Creator。版本为 Qt5.12.2。
注意:必须要安装 Qt Script 组件。多路人脸识别 Qt 预览程序依赖这个组件,不安装会出现编译错误。



3、编译 Qt 程序。使用 Qt creator 打开并导入 cs_rx_cam_arc/qt_rtsp_view 工程进行代码编译。
4、将 PC 接入路由器。CS-R1 服务器也接入该路由器,保证 PC 与 CS-R1 服务器在同一个局域网,保证 PC 与 CS-R1 服务器能 ping 通 。
5、运行 Qt 程序。点击扫描获取 CS-R1 服务器主板与子板的 IP 地址。由于此时子板未烧入特定固件,所以点击扫描只能获取到主板的 IP 地址。下图为烧入特定子板固件之后才会出现子板 IP 地址。

6、使用 Firefly 的 BMC 管理系统进行子板固件升级。
(1)根据 Qt 程序扫描得到的 IP 地址。在浏览器输入 <主板 IP 地址>:3000。登入默认账号:admin。登入默认密码:admin。
(2)进入 BMC 管理系统。点击子板固件升级-->新增子板固件升级-->选择升级固件-->选中升级固件-->添加全部-->升级固件(添加要升级的设备后按钮变亮)。



子板设备固件升级:

6、再次点击 Qt 程序扫描按钮获取 CS-R1 服务器主板与子板的 IP 地址。就能获取到子板的 IP 地址。
7、刚升级完的子板 RV1126 系统时间需要更新。点击系统-->同步更新子板系统时间
8、在上述扫描获取到的 IP 地址。使用 ssh 登录所有子内部,账号为:root,密码为:firefly。使用(ifconfig eth0)命令记录下每一块板子的设备序列号所对应的 mac 地址如图所示。一定要先进行此操作才能开始激活虹软人脸识别算法。


9、虹软人脸识别算法激活。获取虹软人脸识别算法激活码:请联系 Firefly 商务获取。获取到激活码后修改文件:
  1. cs_rx_cam_arc/qt_rtsp_view/rkmedia_rtspget_arc_rtsp_test_sdk/ffarc_rv1126/arc_activation
复制代码
arc_activation 文件如图所示。填入获取的激活码信息。激活码所对应的是子板的 mac 地址。这就是为什么需要上述步骤记录下每块子板的 mac 地址信息。升级固件的时候一定不要进行擦除。擦除可能会导致 mac 地址改变。首次激活必须要联网进行激活。


10、如果 mac 地址不小心被擦除了。子板有内置程序可对 mac 地址进行修改。重启生效。修改命令:
  1. /usr/bin/vendor_storage -w VENDOR_LAN_MAC_ID -t string -i "对应的 mac 地址"
  2. #例如
  3. /usr/bin/vendor_storage -w VENDOR_LAN_MAC_ID -t string -i "2200EF835EE2"
复制代码

11、修改 rtsp 流链接信息。rtsp 流链接文件:
  1. cs_rx_cam_arc/qt_rtsp_view/rkmedia_rtspget_arc_rtsp_test_sdk/ffarc_rk3399/rtsp_url_list
复制代码
链接文件说明:rtsp 流链接+‘#‘号+‘rtsp流取流次数(例如:second、third。自定义名称)’。

12、拷贝部署文件夹到指定目录。将 cs_rx_cam_arc/qt_rtsp_view/rkmedia_rtspget_arc_rtsp_test_sdk 文件夹拷贝到编译目录的路径,用作文件部署。
例如:
  1. cs_rx_cam_arc/build-qt_rtsp_view-Desktop_Qt_5_12_2_GCC_64bit-Debug/rkmedia_rtspget_arc_rtsp_test_sdk
复制代码

执行程序
1、文件部署。
RK3399文件部署:点击文件-->文件部署-->自动部署RK3399文件-->默认选中 main 设备-->发送
RV1126文件部署:点击文件-->文件部署-->自动部署RV1126文件-->默认选中 sub 设备-->发送



2、人员注册。在程序运行目录新建一个文件夹img存放人员注册图片。点击文件-->人员注册-->选择图片-->开始注册

3、验证人员注册是否注册到数据库。点击文件-->人员查询-->查看所有已注册人员。如下图:


4、启动主板服务器。点击预览-->启动主板服务器
5、运行多路人脸识别程序。点击预览-->启动子板程序20路人脸识别程序需要等待约20秒。
6、预览多路人脸识别视频画面。点击预览-->预览视频画面。效果如图:



7、预览单个视频画面。在上图中点击 rtsp 流地址的左边按钮。点击即可实现全屏预览。


全屏预览效果:


相关软件介绍
RK3399 运行的服务器是开源的 EasyDarwin 应用。在 CS-R1 服务器主板 RK3399 已经启动服务器的情况下浏览器输入:
  1. <rk3399的IP地址>:10008
复制代码

即可进入 EasyDarwin 界面如图所示:


点击推流列表即可看到详细的推流数据:


根据网页上的接口文档说明使用浏览器请求获取到的数据。浏览器上输入:
  1. <rk3399的IP地址>:10008/api/v1/pushers
复制代码
得到数据如下图所示:



软件二次开发
人脸识别程序需要掌握的知识:opencv、rv1126 rkmedia 接口使用、虹软人脸识别算法接口使用。

虹软人脸算法 SDK 下载链接:
  1. 链接:https://pan.baidu.com/s/1jr9WQsddTLDTcSAMPdrM8A#list/path=%2F
  2. 提取码:u49i
复制代码
或者进入官网 core-1126-jd4 资料下载页面的算法 SDK 进行下载。

人脸识别源代码:
  1. sdk/app/firefly_rkmedia_demo/rkmedia_rtspget_arc_rtsp_test.cc
复制代码
编译多路人脸识别固件(请保持 SDK 的代码是最新的,不是最新的没有 CS-R1-1126-jd4-sub-arc.mk 文件):
  1. #进入 RV1129 开发 SDK 目录
  2. cd SDK/
  3. ./build.sh device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk
  4. ./build.sh
  5. #固件生成在 SDK/rockdev/pack/ 目录
复制代码





作者: 李南    时间: 2022-1-27 17:12
本帖最后由 李南 于 2022-1-28 17:05 编辑

大佬您好,按照文中指导,编译生成的可执行程序在子板上启动时报如下的错误:
This application failed to start because it could not find or load the Qt platform plugin "vnc"
in "/userdata/qt/plugins".

Available platform plugins are: linuxfb, minimal, offscreen, vnc.

Reinstalling the application may fix this problem.
Aborted (core dumped)


尝试了:1.将buildroot中qt5base-5.9.4/lib下的所有依赖库均拷贝到子板并赋值给环境变量;
                   2.将buildroot生成的qt相关plugins放到rv1126的/userdata/qt/plugins目录并赋值环境变量。
问题依旧。

请大佬指导!


作者: 799959745    时间: 2022-2-9 08:58
李南 发表于 2022-1-27 17:12
大佬您好,按照文中指导,编译生成的可执行程序在子板上启动时报如下的错误:
This applicati ...

1.提供当前sdk的xml文件名称
  1. cd sdk/
  2. realpath .repo/manifest.xml
复制代码
2.提供具体的运行命令与输出log帮助分析



作者: 李南    时间: 2022-2-10 14:39
799959745 发表于 2022-2-9 08:58
1.提供当前sdk的xml文件名称
2.提供具体的运行命令与输出log帮助分析

第1条中提到的SDK的xml文件在哪里,在这个教程中没有看到呢
作者: 799959745    时间: 2022-2-10 14:54
李南 发表于 2022-2-10 14:39
第1条中提到的SDK的xml文件在哪里,在这个教程中没有看到呢

在 sdk/.repo/manifest.xml
作者: 李南    时间: 2022-2-10 20:36
799959745 发表于 2022-2-10 14:54
在 sdk/.repo/manifest.xml

1.xml文件名是:.repo/manifests/rv1126_rv1109_linux/rv1126_rv1109_linux_20220125.xml
2.运行命令:
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot//output/firefly_rv1126_rv1109/host/bin/qmake ./
make
期间未遇到任何错误
作者: 799959745    时间: 2022-2-11 09:00
李南 发表于 2022-2-10 20:36
1.xml文件名是:.repo/manifests/rv1126_rv1109_linux/rv1126_rv1109_linux_20220125.xml
2.运行命令:
...

运行命令以及输出的log发上来
作者: 李南    时间: 2022-2-11 10:42
本帖最后由 李南 于 2022-2-11 10:44 编辑
799959745 发表于 2022-2-11 09:00
运行命令以及输出的log发上来

打印有点长,命令和对应的打印如下:

root@b74f37100b29:/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126# /home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/bin/qmake ./
root@b74f37100b29:/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126# make
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/bin/uic MainWindow.ui -o ui_MainWindow.h
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DBUILDROOT -DRV1126 -DCONFIG_CTRL_IFACE_UNIX -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I-L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/inc -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtWidgets -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I. -I. -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/devices/linux-buildroot-g++ -o main.o main.cpp
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DBUILDROOT -DRV1126 -DCONFIG_CTRL_IFACE_UNIX -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I-L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/inc -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtWidgets -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I. -I. -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/devices/linux-buildroot-g++ -o MainWindow.o MainWindow.cpp
In file included from MainWindow.cpp:1:0:
MainWindow.h: In constructor 'MainWindow::MainWindow(QWidget*)':
MainWindow.h:62:17: warning: 'MainWindow::fileSocket' will be initialized after [-Wreorder]
     QTcpSocket *fileSocket;     //TCP文件套接字
                 ^~~~~~~~~~
MainWindow.h:58:12: warning:   'qint64 MainWindow::receiveFileSize' [-Wreorder]
     qint64 receiveFileSize;     //接收的文件大小
            ^~~~~~~~~~~~~~~
MainWindow.cpp:32:1: warning:   when initialized here [-Wreorder]
MainWindow::MainWindow(QWidget *parent) :
^~~~~~~~~~
In file included from MainWindow.cpp:1:0:
MainWindow.h:60:12: warning: 'MainWindow::receiveFileBytesReceived' will be initialized after [-Wreorder]
     qint64 receiveFileBytesReceived;
            ^~~~~~~~~~~~~~~~~~~~~~~~
MainWindow.h:52:12: warning:   'qint64 MainWindow::blockSize' [-Wreorder]
     qint64 blockSize;                 //每次读取文件数据块大小
            ^~~~~~~~~
MainWindow.cpp:32:1: warning:   when initialized here [-Wreorder]
MainWindow::MainWindow(QWidget *parent) :
^~~~~~~~~~
In file included from MainWindow.cpp:1:0:
MainWindow.h:52:12: warning: 'MainWindow::blockSize' will be initialized after [-Wreorder]
     qint64 blockSize;                 //每次读取文件数据块大小
            ^~~~~~~~~
MainWindow.h:47:12: warning:   'qint64 MainWindow::currentFileSize' [-Wreorder]
     qint64 currentFileSize;    //当前文件大小
            ^~~~~~~~~~~~~~~
MainWindow.cpp:32:1: warning:   when initialized here [-Wreorder]
MainWindow::MainWindow(QWidget *parent) :
^~~~~~~~~~
In file included from MainWindow.cpp:1:0:
MainWindow.h:50:12: warning: 'MainWindow::totalFileBytesWritten' will be initialized after [-Wreorder]
     qint64 totalFileBytesWritten;     //所有文件已写入字节数
            ^~~~~~~~~~~~~~~~~~~~~
MainWindow.h:48:12: warning:   'qint64 MainWindow::totalFileSize' [-Wreorder]
     qint64 totalFileSize;      //所有文件大小
            ^~~~~~~~~~~~~
MainWindow.cpp:32:1: warning:   when initialized here [-Wreorder]
MainWindow::MainWindow(QWidget *parent) :
^~~~~~~~~~
MainWindow.cpp: In member function 'void MainWindow::onCmdSocketBytesWritten(const qint64&)':
MainWindow.cpp:349:56: warning: unused parameter 'bytes' [-Wunused-parameter]
void MainWindow::onCmdSocketBytesWritten(const qint64 &bytes)
                                                        ^~~~~
In file included from MainWindow.cpp:3:0:
register.h: At global scope:
register.h:60:12: warning: 'int load_cfg(const char*)' declared 'static' but never defined [-Wunused-function]
static int load_cfg(const char *cfg_file);
            ^~~~~~~~
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DBUILDROOT -DRV1126 -DCONFIG_CTRL_IFACE_UNIX -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I-L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/inc -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtWidgets -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I. -I. -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/devices/linux-buildroot-g++ -o register.o register.cpp
register.cpp: In function 'int compare(int, const unsigned char*, const unsigned char*, const void*, int, void*)':
register.cpp:27:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
register.cpp:8:44: warning: unused parameter 'name' [-Wunused-parameter]
int compare(int id , const unsigned char * name, const unsigned char * path, const void * feature,int len,void * data) {
                                            ^~~~
register.cpp:8:72: warning: unused parameter 'path' [-Wunused-parameter]
int compare(int id , const unsigned char * name, const unsigned char * path, const void * feature,int len,void * data) {
                                                                        ^~~~
register.cpp: In function 'void printSDKInfo()':
register.cpp:90:49: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'MRESULT {aka long int}' [-Wformat=]
   printf("ASFOnlineActivation failed: %x\n", res);
                                                 ^
register.cpp:92:47: warning: ISO C++ forbids converting a string constant to 'MPChar {aka char*}' [-Wwrite-strings]
  res = ASFOfflineActivation("ArcFacePro32.dat");
                                               ^
register.cpp:94:50: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'MRESULT {aka long int}' [-Wformat=]
   printf("ASFOfflineActivation failed: %x\n", res);
                                                  ^
register.cpp: In function 'int startReister(int, char**)':
register.cpp:117:43: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'MRESULT {aka long int}' [-Wformat=]
   printf("ASFInitEngine failed: %x\n", res);
                                           ^
register.cpp:121:22: warning: missing initializer for member 'sqldata::name' [-Wmissing-field-initializers]
  sqldata data = { -1 };
                      ^
register.cpp:121:22: warning: missing initializer for member 'sqldata::imgpath' [-Wmissing-field-initializers]
register.cpp:121:22: warning: missing initializer for member 'sqldata::data' [-Wmissing-field-initializers]
register.cpp:151:32: warning: missing initializer for member '__tag_ASVL_OFFSCREEN::i32Width' [-Wmissing-field-initializers]
   ASVLOFFSCREEN offscreen1 = {0};
                                ^
register.cpp:151:32: warning: missing initializer for member '__tag_ASVL_OFFSCREEN::i32Height' [-Wmissing-field-initializers]
register.cpp:151:32: warning: missing initializer for member '__tag_ASVL_OFFSCREEN::ppu8Plane' [-Wmissing-field-initializers]
register.cpp:151:32: warning: missing initializer for member '__tag_ASVL_OFFSCREEN::pi32Pitch' [-Wmissing-field-initializers]
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::faceOrient' [-Wmissing-field-initializers]
   ASF_MultiFaceInfo detectedFaces1 = {0};
                                        ^
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::faceNum' [-Wmissing-field-initializers]
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::faceID' [-Wmissing-field-initializers]
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::wear_glasses' [-Wmissing-field-initializers]
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::left_eye_closed' [-Wmissing-field-initializers]
register.cpp:154:40: warning: missing initializer for member 'ASF_MultiFaceInfo::right_eye_closed' [-Wmissing-field-initializers]
register.cpp:155:46: warning: missing initializer for member '__tag_rect::top' [-Wmissing-field-initializers]
   ASF_SingleFaceInfo SingleDetectedFaces = {0};
                                              ^
register.cpp:155:46: warning: missing initializer for member '__tag_rect::right' [-Wmissing-field-initializers]
register.cpp:155:46: warning: missing initializer for member '__tag_rect::bottom' [-Wmissing-field-initializers]
register.cpp:155:46: warning: missing initializer for member 'ASF_SingleFaceInfo::faceOrient' [-Wmissing-field-initializers]
register.cpp:156:32: warning: missing initializer for member 'ASF_FaceFeature::featureSize' [-Wmissing-field-initializers]
   ASF_FaceFeature feature1 = {0};
                                ^
register.cpp:160:68: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'MRESULT {aka long int}' [-Wformat=]
             printf("%s ASFDetectFaces 1 failed: %x\n", argv, res);
                                                                    ^
register.cpp:170:81: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'MRESULT {aka long int}' [-Wformat=]
                 printf("%s ASFFaceFeatureExtractEx 1 failed: %x\n", argv, res);
                                                                                 ^
register.cpp:174:83: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'MRESULT {aka long int}' [-Wformat=]
                 printf("%s ASFFaceFeatureExtractEx 1 sucessed: %x\n", argv, res);
                                                                                   ^
register.cpp:218:45: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'MRESULT {aka long int}' [-Wformat=]
   printf("ASFUninitEngine failed: %x\n", res);
                                             ^
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -std=gnu++11 -Wall -W -dM -E -o moc_predefs.h ../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/features/data/dummy.cpp
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/bin/moc -DQT_DEPRECATED_WARNINGS -DBUILDROOT -DRV1126 -DCONFIG_CTRL_IFACE_UNIX -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB --include ./moc_predefs.h -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/devices/linux-buildroot-g++ -I/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126 -I/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/-L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/inc -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtWidgets -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -I/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I/usr/include/c++/5 -I/usr/include/x86_64-linux-gnu/c++/5 -I/usr/include/c++/5/backward -I/usr/lib/gcc/x86_64-linux-gnu/5/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include MainWindow.h -o moc_MainWindow.cpp
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DBUILDROOT -DRV1126 -DCONFIG_CTRL_IFACE_UNIX -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I-L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/inc -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtWidgets -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I. -I. -I../../rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/mkspecs/devices/linux-buildroot-g++ -o moc_MainWindow.o moc_MainWindow.cpp
/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ --sysroot=/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot -Wl,-O1 -o server_rv1126 main.o MainWindow.o register.o moc_MainWindow.o   -L/home/nan/myFile/Projects/Hongruan/cs_rx_cam_arc/server_rv1126/lib -lstdc++ -larcsoft_face_engine -larcsoft_face -lffsqlite -lsqlite3 -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -L/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022/buildroot/output/firefly_rv1126_rv1109/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lrt -ldl -latomic -lpthread

作者: 799959745    时间: 2022-2-11 10:44
李南 发表于 2022-2-11 10:42
打印有点长,命令和对应的打印如下:

root@b74f37100b29:/home/nan/myFile/Projects/Hongruan/cs_rx_c ...

不是你编译的命令。是你拷贝到1126板子上执行的命令
作者: 李南    时间: 2022-2-11 10:46
本帖最后由 李南 于 2022-2-11 10:54 编辑
799959745 发表于 2022-2-11 10:44
不是你编译的命令。是你拷贝到1126板子上执行的命令

[root@RV1126_RV1109:/userdata]# ./server_rv1126 --platform vnc
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by ./server_rv1126)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by ./server_rv1126)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by ./server_rv1126)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by ./server_rv1126)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face_engine.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face_engine.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face_engine.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face_engine.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face.so)
./server_rv1126: /lib/libstdc++.so.6: no version information available (required by /userdata/qt/lib/libarcsoft_face.so)
This application failed to start because it could not find or load the Qt platform plugin "vnc"
in "/userdata/qt/plugins/platforms".

Available platform plugins are: linuxfb (from /userdata/qt/plugins/platforms), minimal (from /userdata/qt/plugins/platforms), offscreen (from /userdata/qt/plugins/platforms), vnc (from /userdata/qt/plugins/platforms).

Reinstalling the application may fix this problem.


Aborted (core dumped)

期间我尝试过用qt写一个界面程序,界面上只打印helloworld,编译完成上传rk1126子板,运行也会遇到同样的问题——This application failed to start because it could not find or load the Qt platform plugin "vnc"



作者: 李南    时间: 2022-2-11 10:49
799959745 发表于 2022-2-11 10:44
不是你编译的命令。是你拷贝到1126板子上执行的命令

期间我尝试过用qt写一个界面程序,界面上只打印helloworld,编译完成上传rk1126子板,运行也会遇到同样的问题——This application failed to start because it could not find or load the Qt platform plugin "vnc"
作者: 799959745    时间: 2022-2-11 10:52
李南 发表于 2022-2-11 10:49
期间我尝试过用qt写一个界面程序,界面上只打印helloworld,编译完成上传rk1126子板,运行也会遇到同样的 ...

我先验证一下
作者: 李南    时间: 2022-2-11 10:52
李南 发表于 2022-1-27 17:12
大佬您好,按照文中指导,编译生成的可执行程序在子板上启动时报如下的错误:
This applicati ...

期间我尝试过用qt写一个界面程序,界面上只打印helloworld,编译完成上传rk1126子板,运行也会遇到同样的问题——This application failed to start because it could not find or load the Qt platform plugin "vnc"
作者: 799959745    时间: 2022-2-11 10:53
李南 发表于 2022-2-11 10:49
期间我尝试过用qt写一个界面程序,界面上只打印helloworld,编译完成上传rk1126子板,运行也会遇到同样的 ...

确定一下:编译mk文件:./build.sh device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk
作者: 李南    时间: 2022-2-11 10:58
本帖最后由 李南 于 2022-2-11 11:02 编辑
799959745 发表于 2022-2-11 10:53
确定一下:编译mk文件:./build.sh device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk

非常抱歉,重复回帖了,不知道为什么回帖之后状态不更新。编译命令和打印如下:

root@b74f37100b29:/home/nan/myFile/Projects/Hongruan/rv1126_rv1109_linux_release_20211022# ./build.sh device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk
processing board option: device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk
processing option: device/rockchip/rv1126_rv1109/CS-R1-1126-jd4-sub-arc.mk

作者: 799959745    时间: 2022-2-11 14:32
李南 发表于 2022-2-11 10:58
非常抱歉,重复回帖了,不知道为什么回帖之后状态不更新。编译命令和打印如下:

root@b74f37100b29:/h ...

我编译验证了,是可以用的。
1、1126的固件需要用你SDK编译的固件烧入,而非帖子上使用的固件。帖子上的固件是为了让新手快速入门,和当前的固件版本并不匹配。
2、1126开机脚本/etc/init.d/S99_ffarc默认从/usr/bin/server_rv1126拷贝到/userdata/并执行程序。这一点要注意。拷贝完用md5sum命令校验是否是同一个文件。然后执行:
  1. cd /userdata/
  2. ./server_rv1126 --platform vnc
复制代码

3、不启动其他应用的情况下。尝试单独ssh登录进子板执行,先验证程序有没有问题。
作者: 九二共识    时间: 2022-2-14 08:49
回复看看
作者: 李南    时间: 2022-2-14 09:42
本帖最后由 李南 于 2022-2-14 09:45 编辑
799959745 发表于 2022-2-11 14:32
我编译验证了,是可以用的。
1、1126的固件需要用你SDK编译的固件烧入,而非帖子上使用的固件。帖子上的 ...

谢谢大神!有3个新问题:
1.“我编译验证了,是可以用的。”这句话指什么讲的呢,是demo可以在CS-R1-1126-JD4-SUB-ARC-GPT-20211224-1654.img固件上可用吗?
2.我尝试用自己SDK编译的固件烧录到rv1126子板上(update ota /userdata/udpate.img),执行完成该命令后进终端就一直卡在如下的步骤了:

此时在BMC中查看该子板的状态如下:

为什么卡在这不动了呢,这种现象是不是说明升级固件没有成功?
3.找了一块开发板(非CS-R1服务器上的),将编译好的demo在其上运行是成功的,没有遇到问题,如自已写的helloworld界面demo,成功运行后,在vnc客户端中可以看到界面如下:


作者: 799959745    时间: 2022-2-14 09:53
本帖最后由 799959745 于 2022-2-14 10:08 编辑
李南 发表于 2022-2-14 09:42
谢谢大神!有3个新问题:
1.“我编译验证了,是可以用的。”这句话指什么讲的呢,是demo可以在CS-R1-112 ...

1、“我编译验证了,是可以用的。”的意思是:我是根据该xml文件进行编译的:rv1126_rv1109_linux_20220125.xml。将该xml版本编译好的固件通过bmc烧入到子板上面。使用该xml版本编译出来的qmake对qt工程进行编译,然后将可执行文件推送到对应的子板上面。
2、与CS-R1-1126-JD4-SUB-ARC-GPT-20211224-1654.img该固件没有任何联系。自行开发的时候并不使用该固件。
3、RV1126子板固件更新请按照帖子提供的更新方法进行更新。

作者: 李南    时间: 2022-2-14 17:52
本帖最后由 李南 于 2022-2-14 17:54 编辑
799959745 发表于 2022-2-14 09:53
1、“我编译验证了,是可以用的。”的意思是:我是根据该xml文件进行编译的:rv1126_rv1109_linux_202201 ...

感谢大神!按照https://wiki.t-firefly.com/zh_CN ... an-gu-jian-sheng-ji中的固件升级方法升级子板固件之后,能够成功运行server_rv1126进程了,不过两个新问题:

1.成功运行helloworld qt界面demo后,在vnc客户端上有界面输出,不过没有“helloworld!”字样,这是为什呢?如下图:


2.上一次回帖中尝试用https://wiki.t-firefly.com/zh_CN ... ldroot_develop.html中给出的3种固件升级方法中的第三种,如下。为什么这种升级固件的方法不行呢?




作者: 799959745    时间: 2022-2-15 09:02
本帖最后由 799959745 于 2022-2-15 09:13 编辑
李南 发表于 2022-2-14 17:52
感谢大神!按照https://wiki.t-firefly.com/zh_CN ... an-gu-jian-sheng-ji中的固件升级方法升级子板固件 ...

1、server_rv1126程序不需要界面,也显示不了界面,它只是用来与主控RK3399和PC端通信的程序。
由于qt不用界面,我试了几个platform,但是只有vnc能用。
2、server_rv1126代码已经去掉ui显示功能了。你加上相应的代码应该就能显示。

作者: LPA    时间: 2022-3-4 13:47
学习学习




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1