1. 程式人生 > >[嵌入式資料] Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結 轉

[嵌入式資料] Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結 轉

Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結 轉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.       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);

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

相關推薦

[嵌入式資料] Linux移植OpenCV + QtARM(Tiny6410)總結

Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結 轉CSDN 下面的文字比較多啊,主要是加入了很多自己的感慨啊,感嘆啊啥的,其實我覺得已經是罪簡單的方法了,我基本上把我遇到的問題全部羅列了,大家可以參考一下~其實很多問題都是在走彎路,我希望後面

arm-linuxopencv移植

參考:https://blog.csdn.net/gatieme/article/details/49080355, https://blog.csdn.net/luotuo44/article/details/8958990, https://blog.csdn.net/xuluoho

Linux安裝opencv移植ARM

目的: OpenCV是Intel支援的開源計算機視覺庫。它由一系列C函式和少量C++類構成,實現了影象處理和計算機視覺方面的很多通用演算法。它不依賴於其它的外部庫—儘管也可以使用某些外部庫。OpenCV使用BSD License,對非商業應用和商業應用都可以免

ARM嵌入式 ARM Linux 移植 USB 藍芽、交叉編譯 bluez 各種版本

一、基本說明: 目前在嵌入式 Linux 下使用 USB 藍芽模組,比較好的解決方法就是使用 Linux 官方協議棧 bluez,這同時也是 PC 及 Android 手機上使用的藍芽協議棧,可以說還是比較靠譜的。 但是!不得不說,bluez 有多種版本,如

移植OpenCV+QTARM S3C6818開發板上(2)

續《移植OpenCV+QT到ARM S3C6818開發板上(1)》 安裝QT開發環境到宿主機 解壓qt5.7.0原始碼(時間稍稍有點長,為待會編譯捏了一把汗啊!) 解壓完之後進入原始碼根目錄,終端輸入: sudo ./configure -v -release

從零開始移植QT4.8.5之三--linux交叉編譯QT執行庫

這篇文章要實現的目標是在linux下交叉編譯QT在嵌入式裝置OK6410的執行庫,最終在OK6410上執行QT演示程式。 1、觸控式螢幕庫檔案安裝tslib 首先如果嵌入式裝置上有觸控式螢幕,需要先移植tslib,這個不是本次的重點,所以我們就直接搭建編譯的時候需要的tsl

Linux開發】OpenCVARM-linux上的移植過程遇到的問題4---共享庫中巢狀庫帶路徑【已解決】

【Linux開發】OpenCV在ARM-linux上的移植過程遇到的問題4—共享庫中巢狀庫帶路徑【已解決】 標籤:【Linux開發】 緊接著上一篇,我居然又嘗試了一下編譯opencv,主要是因為由於交叉編譯ARM-Linux,opencv,好像剛開始ma

飛凌嵌入式OK335xD LinuxQt程式開機啟動 及 sh開機啟動

1. Qt程式開機啟動 系統自帶的Linux系統中,預設開機自啟動matrix_gui(自帶Qt測試程式),在/etc/init.d/qt.sh檔案中將其替換為想要啟動的Qt可執行檔案即可(該檔案需要在/forlinx/qt/bin/目錄下)。 2.Shell開機啟動 在/

Linux打包釋出Qt應用程式

Linux下打包釋出Qt應用程式 Linux下打包釋出Qt應用程式 1. 編譯檔案 2.巧用指令碼檔案 新建檔案 新增指令碼 執行指令碼 打包釋出 Linux

linux build opencv

apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libp

LinuxCodeBlocks遠端除錯ARM程式環境搭建

Codeblocks:Release 8.02、宿主機:ubuntu10.04、開發板:嵌入式linux作業系統。 1 Codeblocks配置交叉編譯環境 如下圖所示,由上到下的選擇,1處直接選擇即可。2處是你交叉編譯器安裝位置,3 4 5 6 可以在你交叉編譯器安

linux移植libcurl記錄

移植過程主要參考部落格: https://blog.csdn.net/wuzhiwuweisun/article/details/79129838 也借鑑了部落格:https://blog.csdn.net/zhouzhenhe2008/article/details/53768854

Linux移植LCD驅動

 使用Linux3.2.81核心 4.3寸LCD 修改arch/arm/mach-s3c2440/mach-smdk2440.c staticstruct s3c2410fb_di

linux移植wifi之安裝hostapd及其操作(八)

安裝 hostapd 1.  下載,解壓     下載原始碼: http://w1.fi/hostapd/     tar -xvf hostapd-2.6.tar.gz     cd hostapd-2.6/hostapd      2.     編譯、安裝     cp

linux檢視opencv版本

命令如下: pkg-config --modversion opencv 庫檔案一般放在: /usr/local/lib     (PS,系統裝的opencv版本太多,查詢也讓人頭疼) 標頭檔案一般

linux移植wifi之安裝wpa_supplicant及wpa_supplicant其操作(六)

第五節:安裝wpa_supplicant及wpa_supplicant其操作 概念:      wpa_supplicant : 可用於下述"認證/加密"            All security modes have been verified to work (a

linux移植wifi之概念介紹(一)

詳細介紹linux下移植wifi的步驟.docx 目錄 Linux系統下移植wifi模組,使其正常工作。包括兩部分內容,第一部分是識別無線裝置,並且正確安裝驅動程式。第二部分是選擇管理無線連線的方法。本文將介紹這兩部分內容。一、   背景配置w

Linux基於opencv程式編譯時,出現undefined reference to `cv::SIFT::SIFT(int, int, double, double, double)

出現undefined reference to `cv::SIFT::SIFT(int, int,double, double, double)問題,和找不到類似的特徵描述子,還有和nonfree相關的函式,都是少裝了一個庫, 安裝如下: sudo add-apt-re

linux移植wifi之安裝iw and iw操作(五)

第四節 安裝iw and iw操作 一、 先檢視README,獲取了三個有用點:     1.    This is 'iw', a tool to use nl80211(iw需要nl80211)     2.  To build iw, just enter 'make'

linuxcmake+opencv開啟攝像頭

一、必備條件:       gcc、cmake 、opencv 1、安裝gcc: sudo apt-get install gcc 2、安裝cmake :sudo apt-get install cmake 3、安裝opencv 二、編寫CMakeLists.t