现在的位置: 首页 > 综合 > 正文

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

2017年09月18日 ⁄ 综合 ⁄ 共 2109字 ⁄ 字号 评论关闭

在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:
忽略gtk2.0 windows

·        
--without-carbon:
不使用Mac OS上的X

·        
--without-quicktime

·        
--without-1394libs

·        
--without-ffmpeg

·        
--without-python

·        
--without-swig

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

·        
--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.pcLibs项中加入参数-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++的参数)

PCLinux上安装也是一样:

但是,那些程序都可以编译,但是在运行时报错:
error:whiling loading shared libraries:libcxcore.so.l:can not open shared librarise:No such file or directory

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

To run with a parameter:

./facedetect --cascade="haarcascades/haarcascade_frontalface_alt.xml" baboon.jpg

抱歉!评论已关闭.