Opencvsharp移植到Arm64(rk3399pro)

        最近公司要做一个火灾图像识别程序,要在板子上跑。板子是firefly3399pro,这板子性能比较好,带gpu,但是这次时间的关系就选择opencv来做图像识别,gpu性能就无法发挥了,但cpu也是6核。由于用的netcore,在nuget上用了opencvsharp库,使用还是很方便,对opencv封装比较好,函数名基本一致,但是有个最大的问题,这个opencvsharp库提供了现成的Windows,Linux的运行库,但是都是基于x86架构cpu的,基于arm64的还没有,需要自己下载opencv源代码进行编译,再下载opencvsharp源代码进行编译,最后生成opencv库与opencvsharp运行库。于是在网上搜索了很多文章,在这过程中还是踩了不少坑,下面整理如下。

       系统环境:

       主板:firefly RK3399Pro

       .Netcore环境:.Netcore3.1

       Opencv:Opencv-4.5.1

       Opencvsharp:4.5.1

       CPU架构:双Cortex-A72+四Cortex-A53(Arm64)

       操作系统:Ubuntu18.04

  • Opencv移植
  1. 工具准备(编译工具cmake,build-essential)

      板子上运行命令:

      sudo apt-get install build-essential

      sudo apt-get install cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

      sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

  1. gstreamer安装

      在arm64上用opencv获取rtsp会报错:drm prime is not supported as input pixel format

      Opencv默认用ffmpeg,要用gstreamer。

      sudo apt-get install libgstreamer-plugins-base1.0-dev

  1. 源码准备

      下载opencv源码opencv-4.5.1.tar.gz,地址如下

       https://github.com/opencv/opencv/archive/4.5.1/opencv-4.5.1.tar.gz

       拷贝传输至板子上,使用解压命令tar  -zxvf   opencv-4.5.1.tar.gz解压至本地(也可以使用git工具同步到本地)。

  1. 开始编译

       进入文件夹:cd opencv-4.5.1。

       创建build文件夹:sudo mkdir build,进入build:cd build。

       执行cmake命令,最好关闭不要的模块,什么文档、例子、测试(非常耗资源,全部编译内存不足怎么也不过),如果板子内存小了,可以通过swap指令增加交换空间。注意最后的..(cmake要去找  CMakeLists.txt),注意用DWITH_GSTREAMER=ON指定gstreamer解码。指令如下:

       Sudo cmake -DCMAKE_BUILD_TYPE=RELEASE \

      -DCMAKE_INSTALL_PREFIX=/usr/local \

      -DBUILD_DOCS=OFF \

      -DBUILD_EXAMPLES=OFF \

      -DBUILD_TESTS=OFF \

      -DBUILD_PERF_TESTS=OFF \

      -DWITH_GSTREAMER=ON\

       ..

       Cmake完后就生成要编译的内容。

       执行编译,执行sudo make -j4,其中4是指参与编译的cpu数量,不要全量,容易拷死机,等待一长段时间,过程中有进度输出,如果内存不足会卡死,造成编译不通过,需要重新调整上面的参数。

       最后执行生成sudo make install,生成完后在/usr/local/lib可以看到生成的so库。

       可以使用ldconfig命令将/usr/local/lib加入到默认库。具体命令如下:

       sudo echo "/usr/local/lib" >> /etc/ld.so.conf

       /sbin/ldconfig

  • Opencvsharp移植

       Opencvsharp移植较为简单,可以参考

       https://blog.csdn.net/u012168125/article/details/108888207

       编译完毕后在目录/home/gitData/OpenCvSharpExtern/ 目录内有一个文件libOpenCvSharpExtern.so拷贝到/usr/lib就行了。

 

编译好的libopencv以及opencvsharp库已上传https://download.csdn.net/download/fanshijian21/15500918

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值