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

在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

本文转载自:CSDN博客

欢迎加入我爱机器学习QQ14群:336582044

getqrcode.jpg

微信扫一扫,关注我爱机器学习公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值