在RK3399上移植最新opencv+contrib并开启opencl

文章目录

  • 1 安装
    • 1-1 前置软件安装
    • 1-2 开启OpenCL
    • 1-3 cmake配置
    • 1-4 可能遇到的问题

1 安装

1-1 前置软件安装

安装过程最好参考官网安装说明。说明上会写清楚哪些是必须安装,哪些是可选项,参考其他文章往往会忽略这点。比如用惯了ubuntu的人并不知道opencv能解码rtsp,其实是依赖了ffmpeg。而在很多文章里的前置软件中使用ubuntu的apt-get一键全部装完了,所以并未发觉。等到换个平台安装opencv,编译完了发现没有想要的功能,哭唧唧。这块板子就是这样,只能先编译安装ffmpeg,再装opencv才可以具备解码能力。

本以为跟ubuntu 上安装一毛一样,没想到还挺麻烦的。

这块板子上的系统是fedora或者redhat。所以需要通过yum或者dnf安装一些前置依赖软件有不能安装的先跳过,后面在独立安装,如果是可选项跳过也行。
参考:https://blog.csdn.net/yangdiao127/article/details/62430223

yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
yum install zlib-devel
yum install git
yum install gtk2-devel
yum install pkgconfig
yum install numpy 
yum install python-pip python-devel
yum install gstreamer-plugins-base-devel
yum install libv4l 
yum install libdc1394

如果需要视频处理和摄像头方面的支持,则需要安装ffmpeg,如果只是用opencv对静态图像进行处理,则可以不安装ffmpeg。

1-2 开启OpenCL

还记得之前在安卓平台上就遇到过这坑,明明已经开启了OpenCL ON,结果运行的时候没有跑在GPU上。原因是libOpenCL.so这个动态链接库,得正确。在装这块板子的时候,需要安装点东西

sudo dnf install clinfo

然后就可以通过clinfo命令查看cl信息了

1-3 cmake配置

创建build文件夹后,新建脚本文件configure.sh,编辑

cmake \
-D CMAKE_BUILD_TYPE=Release \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.1.0/modules \
../opencv-4.1.0

OPENCV_EXTRA_MODULES_PATH指定了额外contrib模块,替换成你自己的
最后…/opencv-4.1.0替换成你的opencv的目录

运行configure.sh会打印出此次编译会包含的所有内容。包括ffmpeg啦,opencl啦,额外模块啦,查看该内容很有必要,免得错了回过来重复编译。后面就是正常编译安装过程了不谈。

1-4 可能遇到的问题

1)提示内存不足
我是在编译到100%的时候提示的,有一条没有编译好,网上有的说增加内存什么的。我这个直接跳过,进行make install,它发现这里没有编译好,会单线程再来继续编译完成。

2)不要clean
之前有人说make clean是个好习惯,但是在板子上编译速度超级慢,clean后再编译会再来1-2小时,这谁受得鸟。不要clean继续make,会接着上一次。特别是安装完成一次后,需要增加什么功能重新编译的时候,编译好的模块都会跳过。省事。

3)openCL运行时报错
opencl:clEnqueueNDRangeKernel执行报错CL_OUT_OF_RESOURCES
ocal_size=32x8x1
求助

4)configure时找不到ffmpeg库
是因为opencv是通过pkg-config来查找文件的。pkg-config会查找/usr/share/pkgconfig下的*.pc文件,而装ffmpeg的时候,我的是安装在/usr/local/ffmpeg/lib/pkg-config下。将其中的所有*.pc文件拷贝到/usr/share/pkgconfig下就可以了。重新configure opencv

你可能感兴趣的:(linux,opencv)