这是我的第一篇博客,把我最近做的一个东西和大家分享一下,非常高兴和大家讨论,CSDN是个卧虎藏龙之处,好多特别好的文章,我这里见丑了~~~
下面的文字比较多啊,主要是加入了很多自己的感慨啊,感叹啊啥的,其实我觉得已经是罪简单的方法了,我基本上把我遇到的问题全部罗列了,大家可以参考一下~其实很多问题都是在走弯路,我希望后面的人更顺畅一点吧~
目的:将OpenCV2.0或者2.1+Qt移植到ARM上
目标板Tiny6410
PC系统VM1.2+Fedora9(用这个吧,方便)
- 1. Fedora安装
Fedora9的包不容易下,不过我忘了我怎么下的···迅雷貌似可以。
我使用的虚拟机,注意必须要高于1.2的版本,只有他们才里面有Fedora的支持。比较方便。就按照提示一步一步走就行了,建议给的空间大一点,默认是20G,给个40G没问题。
第一个要解决的问题就是虚拟机和PC机的文件拷贝,大家可以参考网上的很多经验,不要用VM tools,我发现传输文件的时候它基本上传输不完全,我用的是网络连接,有两种,在VM的设置里可以找到,安装Fedora的时候也会问你选择Bridge还是NAT,我刚开始用的前者,但后来突然又用不了了,就把VM设置里的改为了NAT,就可以了,至于具体的设置,友善的Fedora安装文档里有。
我使用Fedora的一个巨大的bug就是它居然只给我的根目录留下了不到一个1G的空间,因为后面要求大部分软件都安装在/opt下,所以没地方!!!!而我的/home文件夹下居然有38个G····我擦! 如果你碰到了这个,那告诉你,节约点用吧,还够用的其实。~ 别听教程的把很多软件包都复制到/opt下就可以了,放自己的/home下吧~tar的时候改个源路径就可以了 ~但是目标路径按照手册别变啊!!!
- 2. arm-linux-gcc安装
我用的是arm-linux-gcc-4.5.1(友善之臂光盘里有),各种版本基本上都尝试过,网上建议在编译Qt时用4.1.2版本,我没下载到。安装方法:
将安装包用sd卡复制到自己的任何目录下,注意我们用的是友善之臂提供的安装包,所以它里面有自己设计的路径,这个非常重要,不能错,它指定安装在/opt下,我们要做的也很简单,只需要将其解压到根目录下,它就可以自动安装到正确的目录。
建议用root用户登录,方便!!!
可以直接双击安装包打开,安装到根目录下,解压完检查一下是不是
/opt/FriendlyARM/。。。。
这个目录下。然后在PATH路径中加入该安装路径,方法有两种,一种是修改root的/root/.bashrc文件,用gedit打开,或者修改/etc/profile文件,都行,在其中加入
export PATH=你的安装目录(应该为/opt/FriendlyARM/。。。。/bin):$PATH
即可,修改前者的话可能要logout重新登录一下,后者用
source /etc/profile
命令即可。
- 3. OpenCV移植
移植过2.0和2.1两个版本,应该都问题,问题是路径的设置。
l 2.0是用configure配置,网上有方法,我用的
http://blog.csdn.net/gfocean/archive/2011/04/22/6341155.aspx
这个网址上的配置,具体为
./configure --host=arm-linux --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --without-gtk --enable-static --disable-shared --disable-apps
没有指定安装路径,全部都安装在/usr/local/下,也可以指定安装路径,见
http://blog.csdn.net/chennxi/archive/2010/12/17/6082039.aspx
l 2.1可以用CMAKE配置,我用的版本是cmake-2.8.4-Linux-i386.tar.tz,网上比较容易下载。
配置方式可以参考
http://blog.csdn.net/noodies/archive/2010/08/09/5798434.aspx
在第一次点configure的时候注意选择第三个选项,然后就可以安装网站说的配置了。
- 配置后输入make(时间约15分钟),用第二个网站的方法会中途出现错误,自己修改一下文件在make一下就可以了
之后输入make install(很快),就可以在安装路径下找到你的文件了。
如果要在X86上用OpenCV,那么就不能用上面的方法,因为上面都是为了编译用到ARM上的库,但是稍微修改方法也可以生成X86的库。可以参考
http://blog.csdn.net/ranruoyu1003/archive/2010/12/26/6098847.aspx
将编译好的库用sd卡拷到6410的/lib下即可,如果运行有问题(opencv的错误运行时一般会给出让你知道是什么的错误),可以将文件放到和你PC机上目录路径相同的地方。
注意一点:
6410的linux不支持OpenCV自己的Highgui,所以不能在目标板上使用cvNameWidow(),cvWaitKey(),cvShowImage()等显示函数,但是可以利用里面的cvLoad()等函数。正因为如此,安装支持OpenCV的GTK相当复杂,我们选择用Qt来显示。
- 4. Qt安装
Qt有很多版本,我说说我的经验。在友善的手册里大家要配置linux开发环境需要装的东西真是不计其数···我直接没装了,这也导致我即使按照指示手册一步一步来,也出现了编译的bug。特别是Qaptia2.2···我编译了无数遍,都是到最后bug了···不能这样啊!!!编译一次基本一个小时~~~~时间就这么浪费的啊!!!
我直接用的Qt4.7,这个按照手册上面的方式编译arm版本没有问题~(我一开始用的ubuntu,编译也成功,但是在板子上运行提示错误啊!这直接导致我又装了个Fedora)。
安装手册编译(贼慢啊)完后(注意手册提醒的安装目录)压缩拷到sd卡再解压就可以了~我没有按照手册指示删除来的那个Qt4.7,不过用Fedora编译的话可以删~之后你就可以检验你的库是否移植成功了,祝你好运!
提醒一下,这个地方网上建议用arm-linux-4.1.2,因为很多人用这个编译的Qt没有segmentation fault,我没用,自然就碰到了,不过还好,只有部分语句不能使用,我就用OpenCV代替了···
最后,注意PATH的修改。
- 5. Qt creator安装
这个东西一定要去下那个422M东东啊,我给个网址
http://get.qt.nokia.com/qtsdk/
我当时下了个68M的吧,结果那个东西没有SDK,结果就找不到我安装的Qt4.7,老是提醒找不到可用的version。
这个东西是真好安装,最喜欢了,和windows下一样···好熟悉啊!!!
- 6. OpenCV和Qt结合的配置
要在Qt里用OpenCV岂是一件容易的事?我差点因为这个就放弃了~~~(>_<)~~~~ 不过如果你没遇到一下的问题,那你千万别告诉我~~~不然会气死我的!!!
1) Qt pro的配置
需要在你的Qt工程**.pro文件里加入一些话,这个网址可以参考一下
http://www.linuxidc.com/Linux/2010-08/28049.htm
2) 最怕编译时出现这个啊
http://www.cnblogs.com/lib/libcv.so,needed by****/*.so not foud (try use –rpath or –rpath-link)
这个其实是不是个问题呢,我自己解决后发现他也许不是个问题(不会影响到运行),但是可以解决,参考
http://blog.sina.com.cn/s/blog_602f87700100nyda.html
在LFLAGS中后面添加‘:’号再添加和前面一样的那个东东···改到自己的路径就可以了····
3) 最后的最后
被segmentation fault缠住了,我不加入OpencV的这些配置时,Qt自己的load(imag)很好使,我成功让lena显示出来了,但是加入OpenCV的东西而且按照上面配置好后,bug就来了···我一度愁苦啊!最后不得不放弃load,而用OpenCV的loadImage····哎 不知道这是何故啊!不过也可以用了,OpenCV能够正常工作,Qt的显示也正常。
4) OpenCV照片用Qt显示的办法
网上查一下很多,但是有个简单的
http://blog.csdn.net/gfocean/archive/2011/04/22/6341155.aspx
最后就是将IplImage转换为QImage格式
cvCvtColor(img,img,CV_BGR2RGB);
uchar *imgData=(uchar *)img->imageData;
image=new QImage(imgData,img->width,img->height,QImage::Format_RGB888);
哎,搞了这么久,写个经验吧~ 不枉费了自己的熬夜~~~