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的图像








     -----------------------------------------------------------------------------------------------人生过隙,忽然而已!
    人生天地之间,若白驹之过郤(隙),忽然而已
  • 相关阅读:
    旧文备份:利用一个定时器实现多个虚拟定时器的两种方法
    TypeScript type 类型别名
    TypeScript 模块系统
    github----awesome-typescript-projects
    synchronous-request-with-websockets
    async await promise
    Sharing Configuration in ASP.NET Core SPA Scenarios
    Unicode String to a UTF-8 TypedArray Buffer in JavaScript
    MVC 访问静态页面 View 下面放JS
    Processing Binary Protocols with Client-Side JavaScript
  • 原文地址:https://www.cnblogs.com/xiabodan/p/4038644.html
Copyright © 2011-2022 走看看