DSP

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

2019-07-13 19:31发布

首先要说明一点:虽然移植的教程很多,也有比较全。但是都是只说了一部分,我本人按照他们的做,多多少少都会遇到这样或者那样的问题,然后就再找其他的博客或者论坛。很不方便。所以就想根据自己的亲身经历,也算给自己留一点资料。不过可能不会太详细,最近工作忙,有时间再把图补上吧。 对于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-4linin 目录下的。所以要把这个目录添加到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下创建软链接就可以了
暂时就这样了     下次配置再补全图吧。。。