zoukankan      html  css  js  c++  java
  • zedboard OPENCV移植

    1:系统环境搭建

    要准备好交叉编译环境 见http://blog.csdn.net/xiabodan/article/details/22717175

    2:下载cmake

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
    CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。

     cmake用于opencv的配置 :apt-get install cmake-curses-gui

    3:下载opencv原码

     官方:http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/  
     我的:http://download.csdn.net/detail/xiabodan/7176253
     解压 tar -xvjf Opencv-2.3.1.tar.bz2 -C ./

    4:配置cmake

      原码路径下 创建一build与install文件夹,用于存放编译文件 : mkdir  build
      在主目录下创建一个toolchain.cmake文件
    gedit toolchain.cmake
    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_SYSTEM_PROCESSOR arm)
    set(CMAKE_C_COMPILER /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-gcc)
    set(CMAKE_CXX_COMPILER /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-g++)
    set(CMAKE_FIND_ROOT_PATH /linux/OpenCV/OpenCV-2.3.1/build/)

    
    
     接下来生成makefile文件 
    cmake -D CMAKE_TOOLCHAIN_FILE=toolchain.cmake -D CMAKE_INSTALL_PREFIX=/linux/OpenCV/OpenCV-2.3.1/install ../
    接着再ccmake ./进行配置,配置的内容是所有的以WITH开头的选项全部选成OFF,(除了WITH_V4L 选为ON)因为这些需要第三方库支持的,要是选择这些的话就需要安装第三方库了。按c配置,按g生成并保存
     ccmake  /linux/OpenCv/.....

    5:Opencv 编译与安装

    安装记录1:

    ubuntu首次安装,也就是干净纯系统只是安装了  apt-get install cmake cmake-curses-gui 然后直接是  cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ./ 

    ccmake  ./没有关闭任何配置选项   


    成功编译OPENCV2.4.3        ------------- 100%

    安装记录2:

    然后试着安装

      apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev     

    编译报错:关掉FFMPEG  IEEE1394,V4l1同样报错,总结:应该是我安装了各种库后就不能用opencv里面的库,所以要关闭OPENCV自带的选项,而用我们刚才安装的库来编译


    安装记录3:

    全部关闭 同样报错 ----------86%


    安装记录4:OPencv-2.4.9

    直接全开所有选项:报错
    将所有选项全部关闭:编译通过
                                       但是在运行程序的时候只要程序里面有cvShowImage就会报错,说我的GTK库有问题 ,不知道怎么解决。

    配置完成后就输入make开始编译,编译完成后就是make install安装啦。安装完成后在install的文件夹里就是运行库啦。
    
    
    make install,安装完成后,可以在/usr/local/lib   目录下看看这些链接库,用file  libopencv_calib3d.so.2.3.1 查看信息,得到如下信息:
    file libopencv_calib3d.so.2.3.1libopencv_calib3d.so.2.3.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xb0d34a38b76b0bbe88511635df3bde46c281bb56, not stripped

    6:移植

    然后我们在安装库里面就可以找到编译后的OPENCV库,我的安装路径是在/usr/local/lib下
    拷贝到我们zedboard的的文件系统中,一般放在usr/lib
    cp -a lib/* /media/35d4ac74-c5c9-459b-952e-0207c42b3645/usr/lib/
    还要记得将share,include,bin也拷贝到zedboard上去 
     cp * -a /media/16c3144a-3f71-434e-8bac-eecefae50d4c/usr/local/share/
     cp * -a /media/16c3144a-3f71-434e-8bac-eecefae50d4c/usr/local/bin/
     cp * -a /media/16c3144a-3f71-434e-8bac-eecefae50d4c/usr/local/lib/
     cp * -a /media/16c3144a-3f71-434e-8bac-eecefae50d4c/usr/local/include/
     cp edge_detection.o edge_detection_arm /media/16c3144a-3f71-434e-8bac-eecefae50d4c/


    7:安装依赖库

    sudo apt-get install libjpeg-dev build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev

    apt-get install libtiff4-dev ffmpeg 

    8:编译源文件

          

     arm-xilinx-linux-gnueabi-g++ -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann ./edge_detection.cpp -o ./opencv_test_arm.o




    
    
    
    

    9:在zedboard中运行

    ./edge_detection_arm.o  ./lena.bmp  ./lena_edge.bmp
    

    运行成功后就会在当前目录下生成一个lena_edge.bmp的图像








     -----------------------------------------------------------------------------------------------人生过隙,忽然而已!
    人生天地之间,若白驹之过郤(隙),忽然而已
  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/xiabodan/p/4038644.html
Copyright © 2011-2022 走看看