1. 程式人生 > >Opencv-2.4.9 在 mini2440 上的移植

Opencv-2.4.9 在 mini2440 上的移植

1、前期準備工作

a. 安裝交叉編譯鏈
  我使用的是arm-linux-gcc 4.3.2,解壓到目錄/usr/local/arm/4.3.2,然後在環境變數PATH中增加/usr/local/arm/4.3.2/bin

b. 安裝CMake
  Opencv 2.0之後的版本,必須使用CMake建立Makefile。我使用的CMake版本是2.8.2,解壓到目錄/usr/local/cmake-2.8.2-Linux-i386,然後在環境變數PATH中增加/usr/local/cmake-2.8.2-Linux-i386/bin

2、編譯Opencv

1、解壓Opencv 2.4.9

2、建立build目錄,作為CMake編譯arm版本的工作目錄

3、在X環境下,執行cmake-gui(如果沒裝的話,按照提示安裝一個)
   選擇原始碼目錄
   選擇Build目錄:

  

點選Configure,保持generator為Unix Makefiles,選擇Specify options for cross-compiling,點選Next
Operating System填寫arm-inux

  

點選NEXT再跳出的介面中做如下設定

Operating System 選擇目標系統arm-linux

Compilers中選擇交叉編譯器的gcc和g++

Target Root選擇交叉編譯器的路徑


程式庫的Target Root填寫/usr/local/arm/,然後點選Finish

點選Finish按鈕,開始生成配置檔案,但是這個時候會報錯

System is unknown to cmake, create:

Platform/arm-linux to use this system, please send your config file to [email protected] so it can be added to cmake

這個是因為Operating System填寫的arm-linux不算Cmake能識別的目標系統,這裡可以忽略這個錯誤。

但是這個時候還有其他錯誤

CMake Error at cmake/FindCUDA.cmake:763 (if):

if given arguments:

"CUDA_VERSION" "VERSION_GREATER" "5.0" "AND" "CMAKE_CROSSCOMPILING" "AND" "MATCHES" "arm"

Unknown arguments specified

Call Stack (most recent call first):

cmake/OpenCVDetectCUDA.cmake:26 (find_package)

cmake/OpenCVFindLibsPerf.cmake:24 (include)

CMakeLists.txt:468 (include)

應該是我的電腦裡沒有安裝CUDA的庫,因為後面的開發中也不會用到CUDA,所以我將 WITH_CUDA的鉤去掉,然後再點選一次Configure按鈕,看看還有沒有提示缺少哪些第三方庫,網上其他文章說WITH_TIFF要去掉,但是這裡沒有報錯就不管它了。同時可以將CMAKE_INSTALL_PREFIX改成你想要的路徑,這個路徑所opencv最後庫檔案和標頭檔案的安裝路徑。在不存在其他問題後點擊Generate生存Makefile檔案,如果前面第三方的問題沒有解決這裡是會報錯而無法生存Makefile。生成的Makefile檔案和Cmake配置檔案都在 Wher to build the binarier 中設定的資料夾下

 

修改預設配置,預設安裝目錄為/usr/local,由於我之前有裝x86版的opencv,所以對於交叉編譯的庫來說並不合適,所以我把CMAKE_INSTALL_PREFIX變數改為/usr/local/arm/

4、 點選Generate生成Makefile

(1)如果你現在make,是肯定會出錯的!(不修改,可能白等了至少15分鐘,前車之鑑)

../../lib/libopencv_core.so: undefined reference to `pthread_spin_init'

../../lib/libopencv_core.so: undefined reference to `pthread_spin_unlock'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_lock'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_destroy'
../../lib/libopencv_core.so: undefined reference to `pthread_once'
../../lib/libopencv_core.so: undefined reference to `clock_gettime'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_trylock'

原因是找不到pthread連結庫,開啟資料夾下的CmakeCache.txt進行修改

//Flags used by the linker.(大概在194行附近)
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt  

(2)  opencv編譯OPENEXR時要用到libImath.so,

在配置介面要把build_opencvxr和with_opencvxr去掉,否則會出現這個問題。

/usr/lib/libImath.so: could not read symbols: File in wrong format

collect2: ld returned 1 exit status

make[2]: *** [lib/libopencv_highgui.so] 錯誤 1

make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 錯誤 2 make: *** [all] 錯誤 2

還要去掉build_opencv_ocl和with_opencl,否則會出下面的錯誤

../../lib/libopencv_ocl.so:undefined reference to 'dlopen'

還要去掉tiff庫的編譯

5、make

6、sudo make install

3、測試opencv庫是否安裝正確

還有一步特別關鍵 ,需要把/arm/opencv/lib 下所有的動態連結庫 拷貝到交叉編譯下/arm-non-linux-gnueabi/lib
<span style="font-family:SimSun;font-size:14px;">#include "cv.h"
#include"highgui.h"
const char*picture = "lena.jpg";
int main(int argc,char** argv)
{
	IplImage *pImage=cvLoadImage(picture,1);
	cvNamedWindow("Test",CV_WINDOW_AUTOSIZE);
	cvShowImage("Test",pImage);
	cvWaitKey(0);
	cvReleaseImage(&pImage);
	cvDestroyWindow("Test");
}
</span>
<span style="font-family:SimSun;font-size:14px;">all:test
CFLAGS=-Wall
OPENCV_INCLUDE=-I /usr/local/arm/include/opencv
CC = arm-linux-g++
OPENCV_LINK =-L/usr/local/arm/lib -lcv -lcxcore -lhighgui -lpthread -lrt
%:%.cpp
#$(CC) `pkg-config opencv --libs` $(OPENCV_INCLUDE) $< -o [email protected] $(OPENCV_LINK)
	$(CC) $(OPENCV_INCLUDE) $< -o [email protected] $(OPENCV_LINK)
.PHONY:clean
clean:
	rm -f test
</span>

4、移植到mini2440開發板上

首先複製主機/usr/local/arm/lib//下面的全部.so檔案到嵌入式根檔案系統的/lib/目錄下,再複製我們編譯的test到嵌入式系統/opt/myworks/目錄下(並確保檔案test屬性為可執行),如果test可正常執行沒有報告缺少庫檔案,說明我們編譯的arm-linux版OpenCV庫已經可以正常使用。

相關推薦

Opencv-2.4.9mini2440 移植

1、前期準備工作 a. 安裝交叉編譯鏈   我使用的是arm-linux-gcc 4.3.2,解壓到目錄/usr/local/arm/4.3.2,然後在環境變數PATH中增加/usr/local/ar

Ubuntu 14.04 配置OpenCv 2.4.9

-1 org sent release nbsp build echo opencv 2 時間 安裝工具 g++ 鏈接:http://www.cnblogs.com/LQLin168/p/6844593.html 下載OpenCv 2.4.9(官網地址):http://

3-opencv 2.4.9安裝及配置

技術 build bsp 安裝 -1 images http 9.png .cn 1- 2- 3- 4- C:\Program Files\opencv\build\x86\vc12\bin 5- 3-opencv 2.4.9安裝及配置

學習Opencv 2.4.9 (一)---Opencv + vs2012環境配置

-a class targe 貝爾 waitkey ron ini win font 作者:咕唧咕唧liukun321來自:http://blog.csdn.net/liukun321首先獲得最新的Opencv 2.4.9源代碼:opencv源代碼下載一、Opencv環

學習Opencv 2.4.9(二) ---操作像素

椒鹽噪聲 window align 是個 簡單 ++ ima opencv2 mar 作者:咕唧咕唧liukun321來自:http://blog.csdn.net/liukun321本質上說一張圖像就是由數值組成的矩陣。Opencv 2.x由 cv::Mat 這個數據

VS2010+Opencv-2.4.9的配置攻略

1、下載軟體   vs2010入門書籍,免積分下載   http://download.csdn.net/detail/u014112584/7325617         opencv2.4.0版本和一些例子,免積分下載 

ubantu14.04+ opencv-2.4.9+QT

總結一些大佬的經驗,加上自己親測可行。 一、永恆的第一步,先祭系統 sudo apt-get update sudo apt-get upgrade 二、工具準備 安裝cmake sudo apt-get install cmake sudo apt-get in

Opencv 2.4.9在Ubuntu下的配置與安裝

一、依賴包安裝        1.  build-essential 軟體包,為編譯程式提供必需軟體包的列表資訊,這樣軟體包才知道標頭檔案、庫函式在哪裡。還會下載依賴的軟體包,安裝gcc/g++/gdb/make 等基本程式設計工具,最後才組成一個開發環境。 sudo a

OpenCV入門教程之二】 一覽眾山小:OpenCV 2.4.8 or OpenCV 2.4.9元件結構全解析

毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科

OpenCV入門教程之一】 安裝OpenCVOpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 開發環境配置

毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科

樹莓派安裝QT5+OPENCV-2.4.9學習筆記

感謝CoekJin在安裝QT5上的幫助 一、安裝QT5     開啟終端從源上下載QT5的開發環境和QTCREATOR的圖形介面。 sudo apt-get install qt5-default sudo apt-get install qtcreator     安裝

OpenCV 2.4.9 學習筆記(3)—— OpenCV自動為輸出陣列(矩陣)分配記憶體

  OpenCV大部分時候會為OpenCV方法中的輸出資料(方法的引數)自動分配記憶體,所以如果一個方法的引數有一個或者多個輸入陣列(cv::Mat 例項)和一些輸出陣列時,OpenCV會自動為輸出陣列分配記憶體空間或者重新分配記憶體空間,記憶體的大小和資料型別由輸入陣列決定。如果需要的話,這個方法會通過其他

OpenCV 2.4.9 學習筆記(4)—— 畫素型別與Templates的限制使用

限制使用templates   C++中的Templates使得介面機制非常好用,高效而且能夠保證資料與演算法的安全。但是過多地使用templates可能會增加計算時間和程式碼長度,有時候還能難區分介面和實現。在OpenCV中過多使用templates並不是一件好事,OpenCV的refman中提到Open

OpenCV 2.4.9 學習筆記(2)—— OpenCV記憶體自動管理

  1、OpenCV函式中輸出影象的記憶體分配是自動完成的(如果不特別指定的話)。   2、使用OpenCV的C++介面時不需要考慮記憶體釋放問題。   3、賦值運算子和拷貝建構函式( ctor )只拷貝資訊頭。 上述部分內容參考了OpenCV的中文教程。(http://www.opencv

OpenCV 2.4.9 學習筆記(1)—— 基本功能結構

一些關於OpenCV(2.4.9版本)的學習筆記,作為記錄,以免自己忘了。 安裝與配置   OpenCV的下載、安裝以及在各個平臺(Windows/Linux等)配置網上有很多的資料,自己就不用存了。需要或者遇到問題的時候再說。 基本模組結構   OpenCV(Open Source Computer

在Ubuntu下安裝Opencv 2.4.9

      Opencv 2.4.9在Ubuntu下的配置與安裝       每次學習新東西或者換新的電腦,最讓人頭疼的就是環境的安裝了。網上有一大堆教程,不過總地來講,比較混亂,有些甚至有誤導性,當然也不乏一些有質量的部落格。為了方便自己以後重複安裝以及能夠幫助到有需要的朋友,在此將相關有用的部落格

交叉編譯opencv-2.4.9問題記錄

目錄 目錄 前言 環境 交叉編譯 總結 補充 前言 從來不懂影象演算法,但是為了功能,只能硬著頭皮研究opencv,工作了才知道其實生活才剛剛開始,未來是坎坷而光明的吧! 本篇部

Mac下Xcode(4.6.1)配置Opencv(2.4.9)

1:安裝homebrew和cmake brew install cmake 2:安裝opencv brew tap homebrew/science brew install opencv 3.使用Xcode進行OpenCV專案開發 1.Open Xcode, ch

【轉】【OpenCV入門教程之一】 安裝OpenCVOpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 開發環境配置

本系列文章由出品,轉載請註明出處。  寫作當前博文時配套使用的OpenCV版本: 2.4.8、2.4.9、3.0 ( 2014年4月28更新OpenCV 2.4.9的配置。 2014年9月12更新OpenCV 3.0的配置 2014年9月12日本文第

Windows平臺安裝最新OpenCV-2.4.9,利用Eclipse、MinGW構建C++呼叫OpenCV開發環境

最近電腦重灌系統了,第一件事重灌OpenCV。這次直接裝最新版,2014-4-25日釋出的OpenCV2.4.9版本,下載連結:1、新建資料夾OpenCV2.4.9,然後將348M大小的opencv-2.4.9.exe開啟,路徑選到新建的這個資料夾,可以看到解壓出來有4個多G