将opencv2.4.9移植到ZYNQ开发板上(ZC702)

首先要说明一点:虽然移植的教程很多,也有比较全。但是都是只说了一部分,我本人按照他们的做,多多少少都会遇到这样或者那样的问题,然后就再找其他的博客或者论坛。很不方便。所以就想根据自己的亲身经历,也算给自己留一点资料。不过可能不会太详细,最近工作忙,有时间再把图补上吧。

对于opencv,大家都知道是做图像处理的。所以就需要一些图像解码的库。比如:

|--------zlib

|--------jpeg

|--------libpng

|--------tiff

|--------ffmpeg

|--------|-----x264

|--------|-----xvidcore

其中,zlib,jpeg,libpng,tiff都是对图片编码的解码,也就是读图片用到的库。而ffmpeg是视频解码的库,也就是说需要读取视频就必须编译这个库进opencv,它的依赖库是x264和xvidcore。


Xilinx-ZC702开发板的交叉编译工具是arm-xilinx-gnueabi- ,其下载地址是:

http://pan.baidu.com/s/1kU02yUj

xilinx-arm交叉编译工具:xilinx-cross_compile_2014-4.bin
ffmpeg源码包:ffmpeg-0.10.3.tar.bz2
jpeg源码包:jpegsrc.v8d.tar.gz
png源码包:libpng-1.5.14.tar.gz
tiff源码包:tiff-4.0.3.tar.gz
x264源码包:x264-snapshot-20120528-2245-stable.tar.bz2
xvid源码包:xvidcore-1.3.2.tar.gz
zlib源码包:zlib127.zip

OpenCV源码包是2.4.9.为什么要用249我是觉得反正都配置一回,就配置高一点版本的,毕竟2.x版本都差不多。


QT 还没有时间配置。。。。。

------------------------------------------------我是分割线-----------------------------------------------


1.安装交叉编译工具链toolchain。

这里指的交叉工具链实际上我觉得就是一个编译器,把PC端的程序编译成arm平台的可执行程序。

配置环境:Ubuntu x 32

        一定要是32位的Linux 不然会有各种错误,我看网上还有一种说法,是执行命令:apt-get install   ia32-libs   ia32-libs-gtk。不过我想反正都是装虚拟机干嘛给自己找罪受,直接装个32位的不是更省事嘛。

        然后是需要修改dash为bash,输入命令:

dpkg-reconfigure dash

        在出现的对话框中,选择No就可以了。非常的简单。


        1)解压zc702_cross_compile_2014-4.tar.gz

     我们将要用到的交叉工具链也就是cross compile toolchain 是在  cross_compile_2014-4\lin\bin 目录下的。所以要把这个目录添加到Ubuntu的环境变量PATH中。为了能够所有的终端都可以用这个toolchain 所以就需要把它添加到系统文件中。具体的添加方法如下:

在终端中输入  >sudo   gedit   /etc/bash.bashrc     编辑bash.bashrc文件

在该文件中添加三行:

export ARCH=arm                                                #指定交叉平台

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-                                          #指定交叉编译器

export PATH=/{zc702_cross_compile_2014-4.tar.gz的解压目录}/cross_compile_2014-4/lin/bin:$PATH              # 将交叉编译器的bin目录添加到环境变量中

在终端中输入  >source  /etc/bash.bashrc                     #使当前配置立即生效,执行这句就不用重启系统了。

这样设置以后,在终端输入 >arm-xilinx      然后在按tab 补齐就会出现   >arm-xilinx-linux-gnueabi-   这就说明你PATH的设置生效了。然后可以用这个交叉编译器即arm-xilinx-linux-gnueabi-gcc ,编译一个helloworld程序。

编译命令:arm-xilinx-linux-gnueabi-gcc  hello.c   -o  hello.exe

然后用  > file hello.exe查看可执行程序的属性。会出现arm平台。

        2)安装opencv的各种依赖库

(1)zlib-1.2.7

>unzip zlib127.zip

>cd zlib-1.2.7

>export CC=arm-xilinx-gnueabi-gcc

>./configure --prefix=$ZYNQ_CV_BUILD --shared

>make

>make install


然后,可以进入$ZYNQ_CV_BUILD/lib 目录下检查是否已经编译ARM环境的zlib库

cd $ZYNQ_CV_BUILD/lib

ls

file libz.so.1.2.7

会出现以下信息:(图片以后补上)显示已经生成了arm需要的动态链接.so


(2)jpeg-8d

>tar -zxvf jpegsrc.v8d.tar.gz

>cd jpeg-8d

>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi --enable-shared

>make

>make install

图片后补上


(3)libpng-1.5.14

>tar -zxvf libpng-1.5.14.tar.gz

>cd libpng-1.5.14

>./configure --prefix=$ZYNQ_CV_BUILD --host=arm-xilinx-linux-gnueabi   --with-pkgconfigdir=$ZYNQ_CV_BUILD/lib/pkgconfig

LDFLAGS=-L$ZYNQ_CV_BUILD/lib    CFLAGS=-I$ZYNQ_CV_BUILD/include

>make

>make install

图片后补上


(4)x264-snapshot-20120528-2245-stable

>tar -jxvf x264-snapshot-20120528-2245-stable.tar.bz2

>cd x264-snapshot-20120528-2245-stable

>./configure --host=arm-linux   --cross-prefix=arm-xilinx-linux-gnueabi   --enable-shared    --prefix=$ZYNQ_CV_BUILD

>make

>make install

图片后补上


(5)xvidcore-1.3.2

>tar   -zxvf    xvidcore-1.3.2.tar.gz

>cd  xvidcore/build/generic        //configure在这个目录下

>./configure   --prefix=$ZYNQ_CV_BUILD  --host=arm-xilinx-linux-gnueabi   --disable-assembly

>make

>make install

图片后补上


(6)tiff-4.0.3

>tar  -zxvf  tiff-4.0.3.tar.gz

>cd tiff-4.0.3

>./configure  --prefix=$ZYNQ_CV_BUILD  --host=arm-xilinx-linux-gnueabi   --enable-shared

   LDFLAGS=-L$ZYNQ_CV_BUILD/lib   CFLAGS=-I$ZYNQ_CV_BUILD/include

>make

>make install
图片后补上


(7)ffmpeg-0.10.3

ffmpeg的配置选项比较多,需要添加cflags和ldflags的声明

>tar -jxvf ffmpeg-0.10.3.tar.bz2

>cd fmpeg-0.10.3 

>./configure --prefix=$ZYNQ_CV_BUILD   --enable-shared  --disable-static   --enable-gpl   --enable-cross-complie  --arch-arm  \

--disable-stripping  --target-os=linux  --enable-linx264     --enable-libxvid   --cc=arm-xilinx-linux-gnueabi-gcc  --enable-swscale   \

--extra-cflags=-I$ZYNQ_CV_BUILD/include    --extra-ldflags=-L$ZYNQ_CV_BUILD/lib   --disable-asm

>make

>make install

图片后补上


2.安装Opencv2.4.9过程

首先要先安装一些配置工具:

>sudo   apt-get   install  cmake    cmake-qt-gui   pkg-configure


然后解压Opencv源代码:

>tar  -jxvf   opencv-2.4.9.tar.bz2

进入源代码文件夹,创建一个编译后存放的文件夹rebuild文件夹,用来存放重新编译后的opencv

>cd Opencv-2.4.3

>mkdir   rebuild

>cd rebuild

>gedit  toolchain.cmake

新建toolchain.cmake 文件,并添加如下内容:

set( CMAKE_SYSTEM_NAME  Linux )

set( CMAKE_SYSTEM_PROCESSOR  arm )

set( CMAKE_C_COMPILER   arm-xilinx-linux-gnueabi-gcc )

set( CMAKE_CXX_COMPILER  arm-xilinx-linux-gnueabi-g++ )

set( CMAKE_FIND_ROOT_PATH  "/opt/opencv/opencv-lib ")     ##这个是就是$ZYNQ_CV_BUILD 的路径

set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM  NEVER )

set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY  ONLY )

set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

注:安装完pkg-configure 以后需要配置pkg的搜索路径,因为opencv在2.x 版本以后 都是依赖PKG来找依赖库的,如果不加这句的话会出现  *opencv不支持ffmpeg,也就是读取不了视频*

> export  PKG_CONFIG_PATH=/opt/opencv-lib/pkgconfig

配置完pkg以后,现在可以用cmake-gui来编译opencv源码了。


>cmake-gui

然后设置opencv源码路径,编译后存放的文件夹rebuild,把with_tiff,  with_jpeg ,  with_png ,  with_ffmpeg  ,编译器选择交叉编译文件toolchain.txt。然后点击configure,  generator生成CMAKECACHE.txt文件。


然后关掉cmake-gui,再以记事本的形式打开CMAKECACHE.txt.

>gedit    CMAKECACHE.txt


搜索LINK关键字,在“=”后面添加  :  -lz  -lx264   -ljpeg  -lpng    -ltiff   -lpng15   -lxvidcore   -lavcodec 。。。。 就是缺什么填什么。


然后再关闭 CMAKECACHE.txt文件,执行make 开始编译opencv。

>make

>make install


这样opencv-arm版本的链接库就编译好了。可以编译小的程序来试试看了。


把编译完的opencv 放到开发板的一个存储区,因为arm版的linux系统系统磁盘很小,所以只能把编译后的库放在其他的外挂存储器中,然后在/usr/lib下创建软链接就可以了


暂时就这样了     下次配置再补全图吧。。。










你可能感兴趣的:(C++)