Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結 轉

來源:互聯網
上載者:User

這是我的第一篇部落格,把我最近做的一個東西和大家分享一下,非常高興和大家討論,CSDN是個臥虎藏龍之處,好多特別好的文章,我這裡見醜了~~~

 

下面的文字比較多啊,主要是加入了很多自己的感慨啊,感歎啊啥的,其實我覺得已經是罪簡單的方法了,我基本上把我遇到的問題全部羅列了,大家可以參考一下~其實很多問題都是在走彎路,我希望後面的人更順暢一點吧~

 

目的:將OpenCV2.0或者2.1+Qt移植到ARM

目標板Tiny6410

PC系統VM1.2+Fedora9(用這個吧,方便)

  1. 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的時候改個源路徑就可以了 ~但是目標路徑按照手冊別變啊!!!

 

  1. 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

        命令即可。

 

 

 

  1. 3.       OpenCV移植

移植過2.0和2.1兩個版本,應該都問題,問題是路徑的設定。

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

 

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來顯示。

 

 

  1. 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的修改。

 

 

  1. 5.       Qt creator安裝

這個東西一定要去下那個422M東東啊,我給個網址

http://get.qt.nokia.com/qtsdk/

我當時下了個68M的吧,結果那個東西沒有SDK,結果就找不到我安裝的Qt4.7,老是提醒找不到可用的version。

                  這個東西是真好安裝,最喜歡了,和windows下一樣···好熟悉啊!!!

                  

  1. 6.       OpenCVQt結合的配置

要在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);

 

 

 

哎,搞了這麼久,寫個經驗吧~  不枉費了自己的熬夜~~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.