Zedboard上移植opencv3.4.4成功

由于项目的需要,这两天花了点时间在Xilinx的ZedBoard板上移植了opencv3.4.4,中间遇到了一些问题和困难,好在最后成功的把该版本的opencv3.4.4移植到Zedboard板子上了。过程中参考了好多网友的写的博客,刚开始按照大多数人的方法把opencv2.4.13很顺利的移植到了ZedBoard上,基本上没遇到啥问题。但是当要把3.4.4版本的opencv移植的时候却遇到了各种问题,最后发现最大的问题是由于xilinx的交叉编译器版本太落后引起的,后来尝试用通用版本的交叉编译器移植了一遍,然后就成功的移植上了。下面就将opencv3.4.4版本移植到ZedBoard上的过程给记录一下。

软件平台:Ubuntu 16.04 ,VMware 10.0.7

交叉编译器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

(下载l链接:https://pan.baidu.com/s/12jN7wZmgti45HQIqpgqFIw     提取码:j4kl )

硬件平台:ZedBoard  Rev.D 

一、在Ubuntu上安装交叉编译器

交叉编译器是解压安装,基本思路是将下载的交叉编译器文件解压的系统的某个目录下,然后配置一下环境变量即可使用。

1、下载交叉编译器安装文件到家目录;

2、解压安装文件到/opt目录下(根据需要可以选择不同的安装目录);

3、进入到/opt/arm-2014.05/bin目录,查看解压出来的交叉编译器可执行文件;

Zedboard上移植opencv3.4.4成功_第1张图片

4、执行sudo vi /etc/enviroment命令打开环境变量配置文件,在文件后面添加/opt/arm-2014.5/bin路径,如下图所示

Zedboard上移植opencv3.4.4成功_第2张图片

然后保存退出。

5、执行source /etc/enviroment命令,使环境变量配置生效。

6、执行arm-none-linux-gnueabi-gcc -v指令,可以看到如下信息,表示交叉编译器安装成功。

Zedboard上移植opencv3.4.4成功_第3张图片

二、在Ubuntu上安装cmake,执行:sudo apt-get install cmake cmake-curses-gui命令即可自动安装(确保虚拟机中的Ubuntu可联网)。

三、移植Opencv 3.4.4

1、在/home目录新建一个opencv344的目录,然后将Opencv 3.4.4 的源代码拷贝到/home/opencv344目录下;

2、进入到/home/opencv344目录中,使用sudo unzip 命令将Opencv 3.4.4.zip文件加压到当前文件夹里,将加压出来的文件夹使用sudo mv命令修改为opencv-3.4.4(这一步不是必须的);

3、进入到/home/opencv344/opencv-3.4.4目录里,新建两个文件夹build和install;

Zedboard上移植opencv3.4.4成功_第4张图片

4、进入到build目录,执行sudo cmake-gui命令,打开cmake窗口

Zedboard上移植opencv3.4.4成功_第5张图片

 

在source code里点击Browse Source选择opencv源代码根目录,即/home/opencv344/opencv-3.4.4;

在binaries里点击Browse Build选择在上一步新建的build文件夹,即/home/opencv344/opencv-3.4.4/build;

然后点击窗口左下角“Configure”按钮,然后弹出如下界面。

Zedboard上移植opencv3.4.4成功_第6张图片

在上图中选择第四个选项“Specify options for cross-compiling”,然后点击“Next”按钮,然后弹出如下界面

Zedboard上移植opencv3.4.4成功_第7张图片

在“Operating System”中填入linux,在"Version"中填入4.8.3(可不填),在“Processor”里填入arm;

在Compilers里选择交叉编译器所在的目录,C对应的是/opt/arm-2014.05/bin/arm-none-linux-gnueabi-gcc,C++对应的是/opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++;

在"Target Root"中选择/opt/arm-2014.05/arm-none-linux-gnueabi,然后点击“Finish”按钮,cmake开始执行配置操作。

以下图片显示的是我配置时的编译选项,可以参考一下:

Zedboard上移植opencv3.4.4成功_第8张图片

Zedboard上移植opencv3.4.4成功_第9张图片

Zedboard上移植opencv3.4.4成功_第10张图片

Zedboard上移植opencv3.4.4成功_第11张图片

注意:在上图中CMAKE_INSTALL_PREFIX要选择之前我们在opencv-3.4.4目录下新建的install目录(如果不选的话默认安装目录是/usr/local,这一步根据自己的实际需要可有所变动)

Zedboard上移植opencv3.4.4成功_第12张图片

Zedboard上移植opencv3.4.4成功_第13张图片

Zedboard上移植opencv3.4.4成功_第14张图片

Zedboard上移植opencv3.4.4成功_第15张图片

Zedboard上移植opencv3.4.4成功_第16张图片

Zedboard上移植opencv3.4.4成功_第17张图片

Zedboard上移植opencv3.4.4成功_第18张图片

配置选项修改完毕后,先点击“Configure”按钮进行配置修改,然后点击“Generate”按钮生存makefile文件。然后退出cmkae-gui界面,执行ls命令可以看到在当前的build目录里生成了一堆相关的文件。

Zedboard上移植opencv3.4.4成功_第19张图片

5、分别执行make命令和make install指令,其中make指令会执行较长时间的代码编译工作,请耐心等待!下图是make执行完毕成功的界面:

Zedboard上移植opencv3.4.4成功_第20张图片

make执行成功后,可以执行make install指令,将编译好的文件安装到我们前面指定的目录里,即/home/opencv344/opencv-3.4.4/install,然后可以进入该目录查看安装好的文件目录:bin、include、lib、python、share,其中lib目录存放的是交叉编译好的opencv3.4.4的库文件,也即是我们要下载移植到ZedBoard板子上的东西。

Zedboard上移植opencv3.4.4成功_第21张图片

四、Opencv镜像库的制作及移植

1、使用dd命令创建一个80M的img镜像文件;

2、使用mkfs.ext2命令对刚才创建的img镜像文件进行格式化;

3、使用chmod命令修改img镜像文件的写入权限;

4、将该img镜像文件挂载在/mnt目录下;

Zedboard上移植opencv3.4.4成功_第22张图片

5、进入/mnt目录,将在/home/opencv344/opencv-3.4.4/install/lib编译好的库文件复制到本目录里。

Zedboard上移植opencv3.4.4成功_第23张图片

6、将交叉编译器里需要用到的libstdc++.so库文件复制到opencv镜像库中;

Zedboard上移植opencv3.4.4成功_第24张图片

7、使用chmod命令去掉opencv_lib344.img的写入权限;

8、将/mnt目录卸载掉,完成opencv_lib344.img镜像库的制作。

Zedboard上移植opencv3.4.4成功_第25张图片

五、对测试文件进行交叉编译

我的测试文件是一个检测车号的文件,使用交叉编译器进行编译,如下图所示:

Zedboard上移植opencv3.4.4成功_第26张图片

六、在ZedBoard上移植测试

1、将opencv_lib344.img镜像库和test344.o文件及待检测的图片拷贝到U盘根目录里,把ZedBoard设置为从SD卡中启动,然后将U盘挂载到ZedBoard上。

2、在ZedBoard上使用fdisk -l命令查看U盘挂载后的盘符是/dev/sda1,使用mount命令挂载到/mnt目录下,进入/mnt目录。

Zedboard上移植opencv3.4.4成功_第27张图片

3、然后使用mkdir命令在/usr目录下新建lib目录,接着将opencv_lib344.img镜像挂载到/usr/lib目录。

Zedboard上移植opencv3.4.4成功_第28张图片

4、执行test344.o测试程序,观察测试结果。

Zedboard上移植opencv3.4.4成功_第29张图片

至此,表明OpenCV3.4.4在ZedBoard上移植成功。

 

你可能感兴趣的:(Zedboard上移植opencv3.4.4成功)