移植opencv3.1.0

作者:fly 发布于:2016-8-3 16:03 分类:Linux

在 opencv 交叉编译之前要先进行依赖库的交叉编译,然后才能进行 opencv 库的交叉编译(因为opencv 依赖于很多库函数,如果不编译会造成,编译后的opencv 无法使用)。这里首先给出OpenCV 交叉编译时各个库的依赖关系:  

       OpenCV

                |--------zlib

                |--------jpeg

                |--------libpng

                        |--------zlib

                |--------tiff

                        |--------zlib

                |--------ffmpeg

                        |--------x264

                        |--------xvidcore


安装依赖项

       sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

      这几项与视频解码相关,不安装的话后面opencv make结果就会出现这样:

      FFMPEG:                        NO

      --      codec:                    NO

      --      format:                    NO

      --      util:                          NO

      --      swscale:                NO

      --      gentoo-style:         NO


export OPENCV_DEPEND=/usr/local/arm/opencv-depend     opencv依赖库安装路径

exportOPENCV_INSTALL=/usr/local/arm/opencv-install       opencv安装路径


依赖库的安装编译主要包括:

    zlib-1.2.8

    jpeg-9a

    libpng-1.6.18

    yasm-1.3.0

    last_x264

    xvidcore-1.3.3

    ffmpeg-3.1.1



1, libz 的交叉编译:

./configure --prefix=$OPENCV_DEPEND –shared

修改 Makefile

CC=arm-linux-gcc

AR=arm-linux-ar

RANLIB=arm-linux-ranlib

LDSHARED=arm-linux-gcc -shared -Wl -soname,libz.so.1,--version-script,zlib.map

make

make install

2, libjpeg的交叉编译:

./configure--host=arm-linux --prefix=$OPENCV_DEPEND --enable-shared --enable-static

make

makeinstall

3,  libpng 的交叉编译:

./configure --host=arm-linux --prefix=$OPENCV_DEPEND --enable-shared --enable-static

make

makeinstall

4,  yasm 的交叉编译:

CC=arm-linux-gcc

./configure --enable-shared --host=arm-linux --disable-asm --prefix=$OPENCV_DEPEND

make

makeinstall

5,  libx264 的交叉编译:

CC=arm-linux-gcc

./configure--enable-shared --host=arm-linux --disable-asm --prefix=$OPENCV_DEPEND

make

makeinstall

6,  libxvid 的交叉编译

cd build/generic

./configure --prefix=$OPENCV_DEPEND --host=arm-linux  --disable-assembly

make

makeinstall

7,  ffmpeg 的交叉编译:

./configure --prefix=$OPENCV_DEPEND --enable-shared --disable-static --enable-gpl --enable-cross-compile  --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale --extra-ldflags=-L$OPENCV_DEPEND/lib --extra-cflags=-I$OPENCV_DEPEND/include

make

makeinstall

      

到此所有依赖库编译安装完成

Cmake安装   sudo apt-get install cmake cmake-qt-gui


       需要把 /usr/local/arm/opencv-depend  目录下lib和include所有的文件分别拷贝到  /usr/local/arm/4.3.2/arm-non-linux-gnueabi  lib和include下,不然后面opencv make时会出现错误.


Opencv交叉编译

    cd opencv-2.4.9

    mkdir build

    cd build

    vim toolchain.cmake


###########user defined#############

set( CMAKE_SYSTEM_NAME Linux )

set( CMAKE_SYSTEM_PROCESSOR arm )

set( CMAKE_C_COMPILERarm-none-linux-gnueabi-gcc )

set( CMAKE_CXX_COMPILERarm-none-linux-gnueabi-g++ )

###########user defined#############

set( CMAKE_FIND_ROOT_PATH"/usr/local/arm/opencv-depend" )

set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAMNEVER )

set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

######################################


保存然后

cmake-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ../

紧接着 cmake-gui


默认安装目录为 opencv-3.1.0/build/install ,改为 /usr/local/arm/opencv-install


修改编译选项

CMAKE_INSTALL_PREFIX    /usr/local/arm/opencv-install

去掉 WITH_CUDA

去掉 WITH_GTK

去掉 WITH_1394

去掉 WITH_GSTREAMER

去掉 WITH_LIBV4L    (因为后面有另外一个WITH_V4L)

去掉 WITH_TIFF

去掉 BUILD_OPENEXR

去掉 WITH_OPENEXR

去掉 BUILD_opencv_ocl

去掉 WITH_OPENCL

根据自己的需要选择编译的选项,有的选项需要安装相应的依赖的库,否则编译会出错

完成后 Generate

修改 CMakeCache.txt, CMAKE_EXE_LINKER_FLAGS原来为空,加上 -lpthread -lrt  

make

makeinstall


最后要将 OPENCV_DEPEND下依赖库lib和OPENCV_INSTALL安装的库lib都拷贝到板子上lib目录下,Opencv即可在ARM板子上运行了.

发表评论:

 
Powered by emlog sitemap