基于Linux opencv+tbb+contrib移植到ARM上

4 篇文章 0 订阅
1 篇文章 0 订阅

一、官网下载源码

1.opencv官网源码和contrib源码下载

  1. opencv-4.5.0
  2. opencv_contrib-4.5.0

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
  1. 错误的路径
    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]

  2. 正确的应该是绝对路径:
    在这里插入图片描述

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.第一次编译,有许多要改的文件,基本上下面几个链接都有,可以参考:

参考链接1: 修改头文件和CMakefile文件等
参考链接2: 链接错误
参考链接3: 共享库路径错误

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
opencv2.4.4移植ARM 一、编译环境及库文件 linux环境:ubuntu 11.10 交叉编译:4.6.1 opencv: opencv-2.4.4 cmake: cmake-2.8.1-Linux-i386.tar.gz 二、opencv-2.4.4的移植过程 解压cmake-2.8.1-Linux-i386.tar.gz到/usr/local/ cmake-2.8.1 #export PATH= /usr/local/ cmake-2.8.1/bin:$PATH 用到的主要目录说明: 交叉编译工具链所在目录 /usr/local/arm-4.6.1/ 安装opencv的目录 /usr/local/ opencv源码所在目录 /usr/local /opencv-2.4.4 编译好的opencv库所在目录 /usr/local /opencv-2.4.4/build 默认安装目录为/usr/local #mkdir build #cd build #cmake-gui 选择源代码目录 /usr/local /opencv-2.4.4 选择Build目录 /usr/local /opencv-2.4.4/build 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next, Operating System填写arm-linux C Compilers填写/usr/local/arm-4.6.1//bin/arm-none-linux-gnueabi-gcc C++ Compilers填写/usr/local/arm-4.6.1//bin/ arm-none-linux-gnueabi -g++ 程序库的Target Root填写/usr/local/arm-4.6.1/ 然后点击Finish,开始configure 点击Generate生成Makefile(等configure完之后按钮才能点击) #make 错误一: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_core.so: undefined reference to `clock_gettime' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_core.so: undefined reference to `pthread_key_create 解决方法: 修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除 错误二: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy' ../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp' ../../lib/libopencv_high

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值