Linux Qt+opencv2.3.1在tiny6410上的移植


opencv新手,挣扎了两天总算是移植成功了。成功解决一个问题时的喜悦,如果你已经很长时间没有感受到了,那么对不起,你已经老了。好了,感受在这咱就不多说了,现在切入正题。


linux环境:Fedora9

arm开发板:tiny6410

交叉编译器:cmake2.8.12.2

opencv版本:2.3.1


opencv2.0版本以后就不再是用configure配置,可以是用cmake配置。网上碰到好多都是opencv2.0之前的,所以编译用了好长时间,也碰到了好多问题,查了好多资料才解决。总结,对于初学者,千万不要用最新版本的各种软件,不然编译起来网上找不到参考文档会很痛苦,很痛苦!!!。

首先从官网里下载cmake和opencv,arm-linux-gcc这里咱就不多说了,我用的是FriendlARM Tiny6410光盘里的,安装也是按照光盘说明安装的。

分别解压cmake和opencv


交叉编译opencv for pc


在 /opt/FriendlyARM/opencv下新建一个文件夹opencv-pc作为cmake的工作目录。打开cmake-gui。‘

where is the source code :/opt/FriendlyARM/opencv/opencv2.3.1(opencv所在目录)  

where to the build binaries:/opt/FriendlyARM/opencv/opencv-pc

然后单击configure,对话框填写如下

next,下一个对话框不用管它,generate。然后终端进入opencv-pc,make,有一些错误,不用管它,

make install安装opencv


耐心的等待吧,颜色挺好看的

opencv默认安装在/usr/local。


安装完后还需要:
添加库路径
#gedit /etc/ld.so.conf.d/opencv.conf
加入/usr/local/lib

更新系统库
#ldconfig

设置环境变量
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

交叉编译成功。在Qt4.7上测试。
.pro文件

由于还不知道的库的功能,所以我把所有的库都连接上了。

main.cpp


然后运行图片就出来了


交叉编译opencv for arm-linux

交叉编译的过程与pc机相似
新建opencv-arm。懒得再截图了,就复制了上一个。 一定要把opencv-pc换成opencv-arm!!!



next,关键在这个对话框

arm-linux不用纠结,填上就行。当初我一看Operating System以为需要与系统一致呢,其实不是。然后compilers分别填arm-linux-gcc和arm-linux-g++所在目录。Target Root填的原先见得目录。

Finish,然后修改CMAKE_INSTALL_PREFIX的目录,因为先前在pc机中已经把opencv安装在了/usr/local,为避免冲突,在此目录下新建文件夹arm,选择arm目录



然后还要去掉WITH_TIFF的勾(勾上可能需要安装一些东西),不然稍后编译可能会出错。之后configure、generate。

终端进入opencv-arm,然后make。如果不出意料的话你会出现这个问题

当时我就在这个问题卡了一天。此时应该

修改OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h文件

在第63行的源码:{ return fabsl(x); }改为{ return fabs(x); }。



然后重新make。还会出现第二个问题



修改opencv_arm目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt




再重新make一下,你懂得!这时应该就不会再出现问题。这个过程比刚才还要漫长n倍。慢慢等待吧。

完成之后执行make install就可以安装了。安装在 /usr/local/arm上哦。


具体Qt+opencv移植到开发板上我还没用做。下次再更新。



苦逼的双休日又这样过去了。赶紧睡觉了。


如果你爱他,就让他学计算机,因为那里是天堂;

如果你恨他,就让他学计算机,因为那里是地狱。
























你可能感兴趣的:(ARM嵌入式,opencv,交叉编译,移植,qt4,cmake)