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。
添加庫路徑
交叉編譯成功。在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移植到開發板上我還沒用做。下次再更新。
苦逼的雙休日又這樣過去了。趕緊睡覺了。
如果你愛他,就讓他學計算機,因爲那裏是天堂;
如果你恨他,就讓他學計算機,因爲那裏是地獄。