作者:朱金灿
来源:clever101的专栏
为什么大多数人学不会人工智能编程?>>>
下载源码并创建build文件夹
系统环境为操作系统为:UnionTech OS Server 20 Enterprise,处理器为: 华为鲲鹏处理器(arm架构)。将源码放置在/home/ThirdPartySrc/opencv-4.5.0目录下,然后进入该目录:
cd /home/ThirdPartySrc/opencv-4.5.0
mkdir -p build && cd build
执行cmake命令配置编译选项
cmake编译选项如下
"/home/soft/cmake-3.26.3-linux-aarch64/bin/cmake" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_INSTALL_PREFIX=/opt/ThirdPartyLib/opencv-4.5.0 \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.0/modules \
-DOPENCV_ENABLE_NONFREE=ON ENABLE_CXX11=ON -DBUILD_opencv_python3=OFF \
-DWITH_1394=OFF -DWITH_IPP=OFF -DWITH_TBB=OFF \
-DWITH_OPENMP=OFF -DWITH_PTHREADS_PF=ON -DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF -DOPENCV_GENERATE_PKGCONFIG=ON \
-DWITH_CUDA=OFF -DENABLE_FAST_MATH=OFF -DCUDA_FAST_MATH=OFF \
-DWITH_CUBLAS=OFF
编译选项说明如下:
"/home/soft/cmake-3.26.3-linux-aarch64/bin/cmake"为cmake程序绝对路径,
CMAKE_BUILD_TYPE=Release:不在行成的库文件中包含调试信息,并进行速度优化。如果指定为 Debug ,就可以在 Debug 过程中进入 OpenCV 内部的代码,但运行速度会略微下降。
CMAKE_VERBOSE_MAKEFILE=ON:务必开启,以便于发现编译中出现的问题。
CMAKE_INSTALL_PREFIX=/usr/local:指定 OpenCV 生成的库文件在系统中的安装路径。
BUILD_SHARED_LIBS=ON:成共享库(.so),如果置为 OFF 则只会生成静态库(.a)
OPENCV_EXTRA_MODULES_PATH=<opencv-contrib 目录>,按之前的描述,应为 「…/…/opencv_contrib-4.3.1」。可以用 ls 命令确认相对路径是否存在。
OPENCV_ENABLE_NONFREE=ON:如果置为OFF,一些包含专利保护算法的函数将不会生成。
ENABLE_CXX11=ON:支持 C++11 以上的语法和 STL 库。
BUILD_TESTS=OFF,BUILD_PERF_TESTS=OFF:关闭生成后的自我 TEST ,大多数情况没有必要,可大辐缩短生成时间。但如果怀疑生成的 OpenCV 库有问题,可以进行自测。
OPENCV_GENERATE_PKGCONFIG=ON:建议开启,便于 C++ 程序通过 pkg-config 来引用 OpenCV 库。
WITH_CUDA=ON,ENABLE_FAST_MATH=ON,CUDA_FAST_MATH=ON,WITH_CUBLAS=ON:如果系统正确安装了 CUDA 并希望 OpenCV 启用 CUDA 支持,这四个选项都要打开。
WITH_IPP=ON,WITH_TBB=ON,WITH_OPENMP=ON,WITH_PTHREADS_PF=ON:这四个选项控制 OpenCV 如何进行并发运算,默认都是 ON,但如果有需要生成一个绝对单线程运行的 OpenCV ,请将这几个选项均置为 OFF 。
执行编译
编译命令:
make install -j$(grep -c ^processor /proc/cpuinfo)
生成的库文件在这里可以下载:uos上编译上的opencv 4.5的库文件和头文件
出现问题及解决
编译过程出现警告:xfeatures2d/vgg: download failed: 28;"timeout was reached"之类的警告,
原因是下载boostdesc_bgm.i、boostdesc_bgm_bi.i这些文件出现失败,具体解决方法参考参考文献2。
参考文献:
1.编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决
2.在 Linux 系统中编译安装 OpenCV