您的位置:首页 > 运维架构 > Linux

opencv1.0移植到ARM+linux(TQ2440)

2013-07-24 21:35 447 查看
在OpenCV官网下载linux安装包:http://opencv.org/downloads.html,解压到/opt/EmbedSky/opencv下,然后cd进入解压文件夹。

在解压目录下运行:

./configure --host=arm-linux --without-gtk --without-carbon --without-v4l --without-v4l2 --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static
--enable-shared --disable-apps CXX=arm-linux-g++
--prefix=/home/wudean/opencv-1.0.0/_install

注:

·
--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

·
--without-v4l --without-v4l2:不需要v4l和v4l2

·
--enable-static :生成静态库

· --enable-shared:生成动态库,这一项必须要有,不要以后可能会出现加载动态库失败

·
CXX=arm-linux-g++ :指定编译工具(我用的是TQ提供的4.3.3)

· --prefix=/opt/EmbedSky/opencv/_install:这个是安装目录,最好是这样做,以免污染系统

OpenCV会用到一些dev的包,如png.h,jpeglib.h,所以需要预先交叉编译好zlib/png/jpeg库,把他们生成的*.h放到相应的交叉编译器的include里,*.so.*放到lib,还要拷贝到目标板的根目录的lib中。

特别要注意的:

如果在编译时出现png.h: No such file or directory
,意即缺少开发

make

注:make过程中可能出现

../../cxcore/include/cxmisc.h:133:6: error: #elif with no expression

打开cxmisc.h:把#elif改为#else

如果在编译时出现png.h: No such file or directory
,意即缺少开发库,先交叉编译zlib/png/jpeg

make install

在_install目录下回出现:include lib share
三个目录,这些是我们需要的。

修改_install/lib/pkgconfig/opencv.pc的Libs项中加入参数-lpthread、-ldl之类,例如

Libs: -L${libdir} -lcxcore -lcv -lhighgui -lcvaux -lml -lpthread -lz -lpng -ljpeg -ldl

修改PC主机的 /etc/bashrc
文件,在最后添加以下内容:

export
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/wudean/opencv-1.0.0/_install/lib/pkgconfig

重启电脑!!!

这样就可以交叉编译我们的应用程序:share/opencv/sample/c/里的例子:

arm-linux-g++ drawing.c -o drawing `pkg-config --cflags --libs opencv`

arm-linux-g++ facedetect.c -o facedetect `pkg-config --cflags --libs opencv`

注:交叉编译的应用程序是不能再目标板上运行的,因为需要gtk的窗口库。

修改build_all.sh:把g++改为arm-linux-g++后就可以运行了。

注意上面的··是Tab见上面的执行命令键(将··中命令执行的结果作为g++的参数)

在PC上Linux上安装也是一样:

但是,那些程序都可以编译,但是在运行时报错:

error:whiling loading shared libraries:libcxcore.so.l:can not open shared librarise:No such file or directory

解:將/usr/local/lib/
底下有關opencv的lib全部複製到 /usr/lib
底下就可執行了!

To run with a parameter:

./facedetect --cascade="haarcascades/haarcascade_frontalface_alt.xml" baboon.jpg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: