Ubuntu16.04下移植Opencv3.4.1

本文是在ubuntu16.04的环境下移植Opencv3.4.1为能在IMX6ULLSOC下使用的库文件,要移植供Ubuntu16.04使用的opencv请选择对应的编译器。

一、安装交叉编译工具

1、下载交叉编译器

由于笔者移植Opencv的目的是要在ARM环境下使用,所以需要编译出对应的.so文件。因此选择的是arm-linux-gnueabihf
下载链接:

arm-linux-gnueabihf下载链接

2、安装交叉编译器

Ubuntu 目录下创建/usr/local/arm 文件夹,将编译器安装到该文件夹

sudo mkdir /usr/local/arm

解压下载的编译器压缩包

sudo tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/

修改profile文件内容

sudo vim /etc/profile

在文件末尾添加以下内容

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

保存退出,重启系统。

3、验证交叉编译器

先安装依赖库

sudo apt-get install lsb-core lib32stdc++6

查看版本号,确认是否安装成功

arm-linux-gnueabihf-gcc -v

如果版本号对应自己压缩包上的信息则安装成功。

二、下载Opencv源码

下载链接
opencv下载链接

如本文所描述,选择opencv-3.4.1版本。

三、搭建Opencv编译环境

1、解压文件+创建路径

拷贝下载的源码压缩包到目录下。笔者拷贝到 /home/zwz(用户名) 目录下。解压并且查看文件内容,确保无误。

tar xf opencv-3.4.1.tar.gz
cd opencv-3.4.1/
ls

创建编译和安装文件夹

mkdir build install
ls

安装 cmake 和 cmake-gui 工具

sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

进入build文件夹下,打开配置界面。

cd build
cmake-gui

2、配置图形化工具cmake-gui

2.1选择源码目录和编译目录

选择好源码目录和编译文件存放的目录。
图形化工具配置目录

2.2指定交叉编译工具的具体路径

选择 Unix 类型 Makefiles 及指定具体交叉编译器路径指定交叉编译工具的具体路径:
联系到上文提到的安装编译器的路径:/usr/local/arm,所以在该目录下即可找到编译器的路径。

名称路径
Operation Systemlinux(任取一个名字)
Compilers C/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
Compilers C++/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
Targer Root/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

配置完成后点击右下角 Finish 即可

2.3指定依赖库的链接参数

CMAKE_EXE_LINKER_FLAGS 处添加上“-lpthread -lrt -ldl”。
在这里插入图片描述

2.4更改安装目录

修改安装路径

2.5生成 Makefile 等文件

先点击左下角 Configure,再点击 Generate即可生成。

四、编译Opencv源码

4.1修改common.cc

由于HAVE_PTHREAD 宏定义了 pthread 库,所以需要在common.cc中宏定义HAVE_PTHREAD,使其支持pthread库。
由于coommon.cc路径为opencv-3.4.1/3rdparty/protobuf/s
rc/google/protobuf/stubs/common.cc,所以到opencv源码目录下输入以下命令:

vim 3rdparty/protobuf/src/google/protobuf/stubs/common.cc

找到注释刚结束的行插入#define HAVE_PTHREAD(笔者在第33行插入)以确保能生效。

4.2编译Opencv源码

进入前面创建的build文件夹下,一般这时候终端路径应该是在opencv源码文件夹目录下。所以:

cd build
make -j 16

build完成后,执行:

make install

然后查看install目录下是否有新增文件,如果有的话一般就是编译完成了,打开install/lib文件夹即可查看到opencv相关.so文件。

ls ../install
ls ../install/lib

五、编译源码过程中遇到的错误

arm-linux-gnueabihf-g++: internal compiler error: 已杀死 (program cc1plus)

Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
modules/dnn/CMakeFiles/opencv_dnn.dir/build.make:283: recipe for target ‘modules/dnn/CMakeFiles/opencv_dnn.dir/misc/caffe/opencv-caffe.pb.cc.obj’ failed
make[2]: *** [modules/dnn/CMakeFiles/opencv_dnn.dir/misc/caffe/opencv-caffe.pb.cc.obj] Error 4

原因:机器内存不足
解决方法:清理内存或者参考此博客->解决办法

Makefile:160: recipe for target ‘all’ failed

可能是依赖包没有装全,搜索一下补充即可:

sudo apt-get install build-essential
sudo apt-get install cmake git 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 # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install ffmpeg

安装过Anaconda对此会有影响->解决方法

六、总结

1、点赞 2、收藏 3、关注

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值