opencv4.5.0+tbb+contribe移植到ARM环境
一、官网下载源码
1.opencv官网源码和contrib源码下载
2.解压源码
unzip xx.zip
二、安装编译环境
1.先安装cmake和cmake-qt-gui
sudo apt-get install cmake
sudo apt-get install cmake-qt-gui
2.创建编译输出文件夹和安装文件夹
3.进入配置gui
cmake-gui
这是我配置后的图片
三、配置编译环境
1.添加资源路径和输出路径
2.选择自定义编译器
3.编译器配置(这里的是ARM32位的编译器)
(1) 如果Operating System 填写的不是Linux,则可能会出现编译出来的库所依赖库的路径为相对路径,使用改库时会报错:
error while loading shared libraries: …/…/lib/libopencv_core.so: cannot open shared object file: No such file or directory
(2)查看库依赖路径:
readelf -d libopencv_core.so
-
错误的路径
Dynamic section at offset 0x317ee4 contains 31 entries:
标记 类型 名称/值
0x00000001 (NEEDED) 共享库:[…/…/libopencv_core.so.4.5]
0x00000001 (NEEDED) 共享库:[libstdc++.so.6]
0x00000001 (NEEDED) 共享库:[libm.so.6]
0x00000001 (NEEDED) 共享库:[libgcc_s.so.1]
0x00000001 (NEEDED) 共享库:[libc.so.6]
0x0000000e (SONAME) Library soname: [libopencv_imgproc.so.4.5] -
正确的应该是绝对路径:
4.点击配置
四、勾选配置
1.配置内部模块
1.配置tbb
在这里我们搜索tbb,勾选上BUILD_TBB、MKL_WITH_TBB、WITH_TBB
2.配置jpeg
3.配置png
4.配置zlib
2.配置外部扩展模块
1.配置contrib
这里我们配置宏OPENCV_EXTRA_MODULES_PATH,路径设置为opencv_contrib-4.5.0/modules,路径一定要选择到modules,否则会报错。
2.关于配置contrib报错
fatal erro:boostdesc_bgm.i:No such file or directory 是因为配置cmake-gui时,缺少.i文件,
文件如下:
(1) boostdesc_bgm_bi.i
(2) boostdesc_bgm.i
(3) boostdesc_binboost_128.i
(4) boostdesc_lbgm.i
(5) vgg_generated_48.i
(6) vgg_generated_64.i
(7) vgg_generated_80.i
(8) vgg_generated_120.i
(9) boostdesc_binboost_064.i
(10) boostdesc_bgm_hd.i
(11) boostdesc_binboost_256.i
其他.i文件
(1) generated_16.i
(2) generated_32.i
(3) generated_64.i
五、编译
1.编译
make -j8 //8线程编译
2.编译报错
这里报错是因为添加tbb后,libopecv_core.so 找不到链接库libtb.so
3.查看详细错误
make VERBOSE=1
往下执行,直到出现 --verbose=1 ,出现第一个错误,发现是某个link.txt没有链接tbb库
我们进入到link.txt文件,查看是否如此
cd modules/imgproc/CMakeFiles/opencv_test_imgproc.dir
cat link.txt
发现配置cmake-gui时,cmake并没有配置tbb库的搜索路径,于是手动添加搜索库路径。
这个错误是没了,可是发现又会出现其他错误,其他的link.txt也是没有添加,于是不断的手动添加,发现要添加几百个,耗时2个多小时,才添加完,于是就想弄个批量添加脚本.
4.modules文件夹内添加tbb
我们需要排除CMakefile ts文件夹
5.apps内添加tbb
6.定制脚本grep_all.sh
7.执行自己编写的脚本
./grep_all.sh
一共要修改518个文件
8.再次编译 cmake -j8,100%编译成功
9.当我们每次配置cmake-gui时,都需要运行这个脚本,因为配置会重置CMakefile.txt
六、安装编译输出的文件
1.打包安装
sudo make install
安装成功后,出现bin include lib share 四个文件夹,到这里算是初步移植完了。
2.验证库
可以看到含有tbb库
七、库资源使用说明
1.主要模块+扩展模块
2.模块说明
3.C++ 测试源码
路径为:/lib/share/opencv4/samples
我们勾选:
4.测试示例
路径为:/lib/bin
八、其他基本错误
1.第一次编译,有许多要改的文件,基本上下面几个链接都有,可以参考: