如何在摄像头端跑模型

1. 首先要在虚拟机上创建一个共享路径

a) vi /etc/exports
b) 在文件最后追加: share_dir(如/media/new_disk) *(rw,sync,no_subtree_check)

2. 安装交叉编译环境

在摄像头上跑程序需要安装海思的sdk:Hi3516CV500_SDK_V2.0.0.3.tgz和交叉编译环境arm-himix200-linux.tgz,分别上传至/media/new_disk/package。安装包链接
(1) sdk解压之后,在/media/new_disk/package/Hi3516CV500_SDK_V2.0.0.3/package下面解压mpp_smp_linux.tgz, 最后将模型工程里所有CMakeList.txt的sdk路径替换为/media/new_disk/package/Hi3516CV500_SDK_V2.0.0.3/package/mpp_smp_linux.tgz
(2)安装arm-himix200-linux

a)解压arm-himix200-linux.tgz,
b) 然后根据README.md文件提示安装:
source ./arm-himix200-linux.install install_dir
注意 :安装路径install_dir为虚拟机绝对路径
c) 设置模型工程在CLion中的环境变量
setting-Build,Execution,Deployment-CMake-Environment: LC_ALL=C

3. 制作运行工程所需文件

a) 将工程放到共享路径/media/new_disk下
b) 在虚拟机上线编译算法部分,生成libjdagralg.so
c) 编辑工程生成可执行文件(如alg_test)
d) 在虚拟机共享路径下创建test文件夹,结构如下:
  |-- test
      |-- lib
          |-- libjdagralg.so
      |-- models(此路径下存放模型文件及配置文件)
      |-- alg_test
      |-- gdb_himix200(忘记如何得到和具体作用了。。。)
      |-- start.sh(为执行脚本)

其中start.sh具体内容如下:

#export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/tdfs/lib:./lib
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:./lib    

#./gdb16 camera_app 
#./gdb_himix200 camera_app 
#./gdb-16c-v500 camera_app
#./camera_app
./alg_test    # 测试命令
#./gdb_himix200 alg_test   # debug命令

4. 起nfs服务

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

5. 连接摄像头

telnet 摄像头ip(如192.168.100.2)

6. 将共享路径挂载到摄像头

mkdir camera_dir(如/root/mnt/zwm)
mount -t nfs -o nolock 192.168.1.200:virtual_dir(如/media/new_disk) camera_dir

7. 在摄像头端跑模型

a) 进入到摄像头挂载的test路径下
b) 执行./start.sh即可

8. 注意事项:

(1) 需保证所有用到的文件及路径是有权限的!!!包括图片、so和可执行文件!
(2) 由于交叉编译包和sdk比较大,虚拟机空间不够,进行了扩容,具体见:
VM虚拟机扩展硬盘容量
(3)
Q: 编译工程时,报错not found arm-himix200-linux-g++
A: sudo apt install lib32z1-dev

你可能感兴趣的:(如何在摄像头端跑模型)