移植sqlite3opencv到rv1126开发板上开发人脸识别项目(代码片段)

果果小师弟 果果小师弟     2022-12-03     750

关键词:

一、搭建NFS环境

网络文件系统,英文 Network File System(NFS),是由 SUN 公司研制的 UNIX 表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以在 Ubuntu 上制作板子需要的文件,然后使用 NFS 来加载文件到板子的DDR上。

因为我们使用的板子内存太小,而人脸识别有需要很多的文件来支持,板子放不下,只能通过这种挂载的方式,将程序运行所需要的数据库模型文件放在挂载的目录下,这样就可以了。

1.1 安装NFS服务

在 Ubuntu 终端执行以下指令安装NFS。

sudo apt-get install nfs-kernel-server

1.2 新建NFS共享目录

新建 NFS 共享目录,并给予 NFS 目录可读可写可执行权限。

sudo mkdir /home/zhiguoxin/linux/nfs
sudo chmod 777 /home/zhiguoxin/linux/nfs/

1.3 配置NFS服务

执行以下指令打开etc/exports文件

sudo vi /etc/exports

进入etc/exports文件,在最后添加如下内容

/home/zhiguoxin/linux/nfs *(rw,sync,no_root_squash)

/home/zhiguoxin/linux/nfs 表示 NFS 共享的目录,*表示允许所有的网络段访问,rw 表示访问者具有可读写权限,sync 表示将缓存写入设备中,可以说是同步缓存的意思。no_root_squash 表示访问者具有 root 权限。
修改完如下图所示。

修改完以后保存退出。执行以下指令重启 NFS 服务器。

sudo /etc/init.d/nfs-kernel-server restart

执行以下指令查看 NFS 共享目录。

showmount -e

网络环境

确保网络环境正常,Ubuntu、Windows 和开发板能相互 ping 通。
开发板 IP:192.168.100.75
虚拟机 IP:192.168.100.100
电脑网口的 IP:192.168.100.102

二、交叉编译SQLite3数据库

2.1、准备源码

源码可以周期官网下载,放在我的共享文件夹下,然后解压。

2.2、准备RV1126的sdk包

这个RV1126的源码包在购买板子的时候商家会送你的

这个那文件夹里面有交叉编译工具链。在交叉编译之前,得在sdk里面找到交叉编译工具链:

然后我这里放在samba共享目录下,我的共享文件夹对应我的ubuntu的目录是

/home/zhiguyoxin/shared/

现在开始来交叉编译SQLite3,这个SQLite3的源码还是用之前给大家的源码包:

使用命令解压

tar -zxvf sqlite-autoconf-3380500.tar.gz 

2.3、交叉编译SQLite3

然后开始进行交叉编译,不过在在这之前,先在当前目录下创建一个文件夹来存放等下交叉编译出来文件:

mkdir arm_sqlite3_install

最后最为关键部分是,现在找到那个之前交叉编译的路径来,也就是结对路径:

/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin

接着刚才建立的arm_sqlite3_install,也是要找到他的绝对路径来:

/home/zhiguoxin/shared/sqlite-autoconf-3380500/arm_sqlite3_install

最后就可以按照下面这个命令来执行编译了:

./configure CC=/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc --host=arm-linux --prefix=/home/zhiguoxin/shared/sqlite-autoconf-3380500/arm_sqlite3_install

然后执行分别执行以下命令即可:

make -j8
make install

最后在arm_sqlite3_install目录下生成四个文件:

进入到arm_sqlite_install目录下的lib目录,这里面就是交叉编译出来的.so的动态库文件,如下图所示:

我们把这些动态库进行一个打包:

zip -r arm_sqlite3_lib.zip *so*

把这个打包文件拷贝到nfs目录下去:

cp -rf arm_sqlite3_lib.zip  /home/zhiguoxin/linux/nfs

令外还要将sqlite3可执行文件拷贝至/home/zhiguoxin/linux/nfs目录下

使用这个可执行文件我们查看数据库中的数据,做一下添加删除的操作。

三、交叉编译OpenCV

同样现在官网下载号源码包,放再共享文件夹下

解压

unzip opencv-3.4.12.zip -d opencv-3.4.12

进入解压后的opencv版本platforms/linux目录下去:

cd opencv-3.4.12/platforms/linux

修改arm-gnueabi.toolchain.cmake

vim arm-gnueabi.toolchain.cmake

将里面的交叉编译路径修改成你自己的路径

/home/zhiguoxin/shared/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf

建立一个build目录,并进入build下去:

编译:

cmake -DCMKAE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake -DCMAKE_INSTALL_PREFIX=/opt/arm_opencv -DSOFTFP=ON -DENABLE_PROFILING=OFF -DWITH_OPENCL=OFF -DWITH_TBB=ON -DWITH_V4L=ON -DHAVE_CAMV4L2=ON -DBUILD_TESTS=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=ON -DHAVE_FFMPEG=ON -DBUILD_opencv_js=OFF -DENABLE_NEON=OFF -DENABLE_VFPV3=OFF ../

然后执行下面两句

make -j8
make install

最后结果:

先进入到build目录下的lib目录下,你会看到很多动态库,

对其打包:

zip -r arm_opencv_lib.zip lib*

将文件拷贝至/home/zhiguoxin/linux/nfs//共享文件夹

cp -rf arm_opencv_lib.zip  /home/zhiguoxin/linux/nfs/

四、移植rknn动态库

把sdk里面的rknn动态库移植到nfs目录下,这是我放sdk的路径:

将这个文件拷贝到/home/zhiguoxin/linux/nfs目录下,用啥方式都可以,只要拷贝过去就可以了。

五、RV1126人脸识别工程交叉编译

首先下载人脸识别源码,我下载后之后放在这里

在编译之前,我们要修改一下Makefile:

vim Makefile

这里修改成你的sdk交叉编译工具链的路径

然后make就看可以了

make

5.1 移植人脸识别数据模型

将人脸识别数据模型拷贝至/home/zhiguoxin/linux/nfs/

cd /home/zhiguoxin/myproject/rockx_face_recognize_project_rtsp
cp rockx_data/ -rf /home/zhiguoxin/linux/nfs/

5.2 移植人脸识别可执行程序

将人脸识别编译出来的可执行程序拷贝至/home/zhiguoxin/linux/nfs/

5.3 移植人脸识别插入人脸数据可执行程序

将人脸识别编译出来的插入人脸数据库可执行程序拷贝至/home/zhiguoxin/linux/nfs/

5.4 移植人脸识别数据库

将数据库文件face.db文件拷贝至/home/zhiguoxin/linux/nfs/

六、RV1126板子的处理

6.1 挂载

在开发板的/mnt/新建一个nfs文件夹

cd /mnt/
mkdir nfs

在板子上使用nfs挂载,之后在ubuntu上的/home/zhiguoxin/linux/nfs放的文件,都会在共享在板子的/mnt/nfs目录下

mount -t nfs 192.168.100.100:/home/zhiguoxin/linux/nfs /mnt/nfs -o nolock
  • 192.168.100.100是我虚拟机的IP地址
  • /home/zhiguoxin/linux/nfs是我虚拟机下的nfs目录
  • /mnt/nfs是板子的挂载目录

6.2 删除原有数据库表

./sqlite3 face.db
.tables
select *from face_data_table;
delete from face_data_table;
.quit

6.3 插入人脸数据

./rkmedia_rockx_face_insert liuyao liuyao.png
./rkmedia_rockx_face_insert yangjiacheng yangjiacheng.png

6.4执行程序

./rkmedia_rockx_face_rga_rtsp_main

ffplay –x 800 –y 400 rtsp://192.168.100.75/live/main_stream

或者使用vlc拉流

yolov5移植rv1126说明(代码片段)

YOLOV5移植RV1126说明说明实现在yolov5训练出模型,然后在rv1126设备上运行。操作过程简述在YOLOV5中训练出xxx.pt模型将pt转为onnx模型将onnx转为rknn模型部署rknn模型环境特别说明YOLOV5的运行环境是python3.8的,而rv1126的开发环境to... 查看详情

yolov5移植rv1126说明(代码片段)

YOLOV5移植RV1126说明说明实现在yolov5训练出模型,然后在rv1126设备上运行。操作过程简述在YOLOV5中训练出xxx.pt模型将pt转为onnx模型将onnx转为rknn模型部署rknn模型环境特别说明YOLOV5的运行环境是python3.8的,而rv1126的开发环境to... 查看详情

rv1126/rv1109ipc板+rk3568+鸿蒙ai视频解决方案

近年来,云终端产品在办公、教育、工控等行业被广泛应用,其具有实用性强、运维量小、数据存储更安全等特点,深受市场青睐。而面对复杂光照环境、人流与车流、多变人体动作等复杂场景,成像质量和画面... 查看详情

瑞芯微rv1126buildroot开发学习笔记(代码片段)

1、BuildRoot如何增加一个包?参考<TheBuildrootUserManual.pdf>第17章2、BuildRoot如何单独编译某一个包?如果修改了源码,在编译前运行make<package>-dirclean如果只是修改output目录下的东西,编译前运行make<package>... 查看详情

瑞芯微rv1126buildroot开发学习笔记(代码片段)

1、BuildRoot如何增加一个包?参考<TheBuildrootUserManual.pdf>第17章2、BuildRoot如何单独编译某一个包?如果修改了源码,在编译前运行make<package>-dirclean如果只是修改output目录下的东西,编译前运行make<package>... 查看详情

rv1126适配debian10(搭建人脸识别云服务器)(代码片段)

...ildroot系统,虽然Buildroot系统开销非常小但是对于应用开发部署并不是那么友好。所以Firefly为RV1126适配了Debian10,Debian10最大的优势就是拥有丰富的d 查看详情

瑞芯微rv1126如何配置和编译linux内核学习笔记(代码片段)

1、配置环境./build.shdevice/rockchip/rv1126_rv1109/BoardConfig-aybering.mk2、切换到内核源码目录cdkernel3、配置内核(1)配合内核平台环境makeARCH=armrv1126_defconfig(2)使用菜单的方式配置Linux内核makeARCH 查看详情

瑞芯微rv1126如何配置和编译linux内核学习笔记(代码片段)

1、配置环境./build.shdevice/rockchip/rv1126_rv1109/BoardConfig-aybering.mk2、切换到内核源码目录cdkernel3、配置内核(1)配合内核平台环境makeARCH=armrv1126_defconfig(2)使用菜单的方式配置Linux内核makeARCH=armmenuconfig4、保存配置makeARCH= 查看详情

rv1126笔记十二:实现rtmp单路拉流

...析了视数据,不处理音频。如果想测试音频,建议用其他开发板,正点原子的就不错。拉流后,如果有屏幕,可以在屏幕上显示,这里采用的是软解码方式显示,后面多路拉流显示比较方便,也可以自行参考rkmedia采用硬解码方... 查看详情

瑞芯微rv1109配置gpio设备树修改笔记(熟悉新平台从点灯大法开始)

...台感兴趣的读者,请自行到文末下载SDK:以下是我对荣品开发板官方资料的补充,本人用的是淘宝购买的荣品RV1109开发板,那么如何使用设备树来配置一个GPIO呢?1、设备树文件kernel/arch/arm/boot/dts/rongpin/rv1126_1109_common.dtsi2、GPIO设... 查看详情

linux系统移植:原厂kernel移植到开发板(代码片段)

文章目录Linux系统移植:原厂Kernel移植到开发板一、获取原厂内核并编译二、内核启动测试三、添加自己板子文件3.1板子配置文件3.2板子设备树3.3编译四、重要配置修改4.1主频修改4.2EMMC驱动修改4.3网络驱动修改4.4保存修改后... 查看详情

rv1126-rv1109mpp使用说明

...构MppApi组合使用来实现解码器与编码器的功能。目前以RV1126为例使用MPPSDKmpp测试程序说明 查看详情

移植opencv到开发板,摄像头在开发板6410上的采集使用

最近在搞人眼检测人脸识别移植opencvqt到开发板tiny6410的时候在虚拟机跑得程序可以用,但是一直到开发板一堆错误。移植qt我简单写一下很简单然后安装QT4.7①    拷贝压缩包到主机/opt目录下②    #mkdir–p/opt/mini6410③  ... 查看详情

瑞芯微rv1109配置gpio设备树修改笔记(熟悉新平台从点灯大法开始)(代码片段)

...的读者,请自行到文末下载SDK:以下是我对荣品开发板官方资料的补充,本人用的是淘宝购买的荣品RV1109开发板,那么如何使用设备树来配置一个GPIO呢?1、设备树文件kernel/arch/arm/boot/dts/rongpin/rv1126_1109_common.dt... 查看详情

移植openssh到开发板

1、下载源码zlib,openssl,openssh,配置编译链,编译,安装。大致的配置如下:编译zlib./configure--prefix=/home/potato/openssl/install/zlib-1.2.3makemakeinstall编译openssl./Configure--prefix=/home/potato/openssl/install/openssl-0.9.8e& 查看详情

mplayer移植到am335x开发板

参考《mplayer移植到arm心得》 ,http://blog.csdn.net/xiaohuangzhilin/article/details/52399746移植了mplayer1.0rc2版本 ./configure--prefix=/usr/local/mplayer--cc=arm-linux-gnueabihf-gcc--target=arm-linux--dis 查看详情

分享itop4412开发板-bluetooth移植文档

【分享】iTOP4412开发板-Bluetooth移植文档      最近须要把Bluetooth移植到iTOP-4412 开发平台。查阅了相关资料,经过一段时间的研究、调试,最终成功的将蓝牙功能移植到了开发板上面。这里笔者记录移植过... 查看详情

瑞芯微rv1109sdk定制与调试总结笔记(代码片段)

...,解决串口终端乱码问题1.1、修改buildroot1、修改路径:rv1126_rv1109_linux_sdk_v1.8.0_20210224/buildroot/configs/rockchip_rv1126_rv1109_defconfig2、修改方法:去除:-BR2_TARGET_GENERIC_GETTY_BAUDRATE_1500000=y添加:+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y此过程也... 查看详情