這是我的第一篇部落格,把我最近做的一個東西和大家分享一下,非常高興和大家討論,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);
哎,搞了這麼久,寫個經驗吧~ 不枉費了自己的熬夜~~~