zoukankan      html  css  js  c++  java
  • 嵌入式ARM系统中OpenCV的移植

    ◆(在ubuntu中编译):
    安装依赖库:sudo apt-get install build-essential manpages-dev pkg-config


    安装libpng:
    sudo apt-get install zlib1g-dev
    sudo wget http://downloads.sourceforge.net/libpng/libpng-1.2.18.tar.gz?modtime=1179259677&big_mirror=0
    sudo tar -xvzf libpng-1.2.18.tar.gz
    cd libpng-1.2.18
    sudo ./configure --prefix=/usr/local/libpng
    sudo make
    sudo make install
    同样的方式安装: libjpeg     libz
    注意:如果出现“/usr/bin/install: 无法创建普通文件“/usr/local/libjpeg/bin/cjpeg”: 没有该文件或目录”的这种错误,是因为无法创建相关的目录,这里需要自己手动创建: sudo mkdir -p /usr/local/libjpeg/bin/cjpeg

    ◆ ./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon   --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-none-linux-gnueabi-g++ CPPFLAGS=-I/usr/arm-2008q3/arm-none-linux-gnueabi/include --prefix=/usr/opencv
    说明:
          --host=arm-linux :指出交叉编译arm平台
          --without-gtk:忽略gtk+2.0 windows
          --without-carbon: 不使用Mac OS上的X库
          --without-quicktime
          --without-1394libs
          --without-ffmpeg
          --without-python
          --without-swig
          --enable-static :生成静态库
          --disable-shared:不生成动态库
          CXX=armv4l-unknown-linux-g++ : 指定编译工具(建议用2.95.2或者2.95.3版本)
          CPPFLAGS=-I/usr/include :OpenCV会用到一些dev的包,如png.h,jpeglib.h,大部分头文件在/usr/include下


    make
    make install

    ◆export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/opencv/lib/pkgconfig
    接着,根据需要在/usr/opencv/lib/pkgconfig/opencv.pc的Libs项中加入参数-lpthread、-ldl之类,例如
    Libs: -L${libdir} -lcv -lcxcore -lcvaux -lpthread -lrt  -lm -lpng -ljpeg -lz -lm –ldl

    ◆清除编译的中间文件和编译后的文件:
    #make clean
    #make distclean

    ◆编译例程drawing.c
        armv4l-unknown-linux-g++ `pkg-config --cflags --libs opencv`  drawing.c -o drawing
    或者尝试(某些情况下,顺序问题可能引发undefined reference错误)
        arm-linux-g++ drawing.c -o drawing `pkg-config --cflags --libs opencv`
    或着执行
        arm-linux-g++ drawing.c -o drawing -I/usr/opencv/include/opencv -L/usr/opencv/lib  -lcv -lcxcore -lpthread -lrt -lcvaux -lm -lpng -ljpeg -lz -lml -lhighgui –ldl

    注意:这儿编译的程序由于没有添加gtk的支持,故而在ARM上是无法运行的,不过去掉显示相关的函数,重新编译,是可以执行的。opencv中文论坛上,有人说才vCreateImage无法连接,不过我测试的结果是可以的,highgui中,有一些非显示的函数应该可以调用。

    ◆出现缺少ldconfig是因为系统PATH中没有包括/sbin,自己添加上即可。
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/opencv/lib/pkgconfig

    ◆如果出现缺少libstdc++库的情况,可以在arm编译器目录下的lib目录中查找,拷贝到开发板中,并确保程序可以找到即可。

    ◆摄像头驱动
    以我现在所用网眼V2000为例子,内核选项加入OV511驱动,并且模块加载。OpenCV程序中默认设备为/dev/video0 ,在程序中调用cvCaptureFromCAM函数可以直接获取摄像头,并采集图像。
    显示:  显示直接在要显示的地方调用显示驱动函数。

    作者
      谭学科,大连理工大学硕士研究生,Email:xueketan@student.dlut.edu.cn    Shiqi Yu

    参考:opencv中文论坛

  • 相关阅读:
    Privacy Policy
    privacy
    将一个无法一次读入内存的大文件排序
    java实现二叉树的非递归遍历
    java静态方法同步问题
    关于java静态方法继承问题
    Android 代码写布局
    Android自定义ImageView实现手势放大图片的控件,无需依赖任何第三方。
    Gradle版本更换问题
    Android的AlertDialog实现圆角边框
  • 原文地址:https://www.cnblogs.com/feisky/p/1704173.html
Copyright © 2011-2022 走看看