經本人嘗試opencv2.4.9在arm-hisiv200-linux-g++ 可以編譯通過,在arm-hisiv100-linux-g++ 下編譯會出現錯誤。本文分別介紹在arm-hisiv200-linux-g++ 和arm-hisiv100-linux-g++ 下opencv的編譯方式。
一、arm-hisiv200-linux-g++交叉編譯鏈
Ubuntu12.04
OpenCV-2.4.9
1、在/home下新建文件夾
# mkdir opencv249
把下載的OpenCV-2.4.9.tar.bz2解壓到/home/opencv 目錄下
2、然後在home/opencv 新建一個 hisiv200-build 文件夾,作為CMake編譯hisi版本的工作目錄
# mkdir hisiv200-build
3、在終端裡調出CMake gui界面:
# cmake-gui
(1)在configure時選擇
CMAKE_SYSTEM_NAME:hisiv-linux
C:選擇/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc
C++:選擇/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-g++
修改安裝目錄:CMAKE_INSTALL_PREFIX:/opt/2.4.9-arm-hisiv200
(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庫的編譯
(3)修改默認安裝路徑,默認安裝目錄為/usr/local,但我想對它統一歸類,所以我在opt/目錄下新建了一個opencv249文件夾,在Cmake-gui裡修改CMAKE_INSTALL_PREFIX變量改為/opt/opencv249/hisi
(4)修改hisiv200_build目錄下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原來為空,加上-lpthread -lrt
主要
opencv
編譯
OPENEXR
時要用到
libImath.so
,所有我就把那個取消了,然後編譯就沒出現過這個問題
4、進行編譯:make
5、make install
這樣就移植完成
二、arm-hisiv100-linux-g++交叉編譯鏈
Ubuntu10.04
OpenCV-2.4.2
步驟與上述一致。
三、配置編譯環境
1、進入/opt/opencv249/hisi目錄下,建立pkgconfig目錄,進入目錄建立hisiv200-opencv249.pc文件 #gedit hisiv200-opencv249.pc
2、編輯庫連接配置文件
#gedit /etc/ld.so.conf.d/hisiv200-opencv249.conf
輸入/opt/opencv249/hisi/lib
然後啟用配置sudo ldconfig
3、配置PKG_CONFIG_PATH
#gedit /etc/bash.bashrc
在文檔最後加入export PKG_CONFIG_PATH=/opt/opencv249/hisi/lib:$PKG_CONFIG_PATH
4、測試#pkg-config --libs --cflags hisiv200-opencv249
會顯示相應的頭文件和庫即可
四、編譯程序
注意:embedded linux不支持OpenCV自己的Highgui,所以不能在目標板上使用cvNameWidow(),cvWaitKey(),cvShowImage()等顯示函數,但是可以利用裡面的cvLoad()等函數。
本人寫了一個腳本文件,與要編譯的文件放在同一目錄下,直接./ ******,就可以編譯C和C++源文件
注意:要在該腳本文件中加上-static。否則在hisi上無法運行。
如果出現cv異常之類的錯誤,就是使用了cvNameWidow(),cvWaitKey(),cvShowImage()等顯示函數
相關C和C++源文件與hisiv200-opencv249.pc,文件下載:
--------------------------------------分割線 --------------------------------------
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2015年資料/2月/3日/OpenCV在Hisi上的移植總結/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
--------------------------------------分割線 --------------------------------------
Ubuntu Linux下安裝OpenCV2.4.1所需包 http://www.linuxidc.com/Linux/2012-08/68184.htm
Ubuntu 12.04 安裝 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htm
CentOS下OpenCV無法讀取視頻文件 http://www.linuxidc.com/Linux/2011-07/39295.htm
Ubuntu 12.04下安裝OpenCV 2.4.5總結 http://www.linuxidc.com/Linux/2013-06/86704.htm
Ubuntu 10.04中安裝OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm
基於QT和OpenCV的人臉識別系統 http://www.linuxidc.com/Linux/2011-11/47806.htm
[翻譯]Ubuntu 14.04, 13.10 下安裝 OpenCV 2.4.9 http://www.linuxidc.com/Linux/2014-12/110045.htm
--------------------------------------分割線 --------------------------------------
OpenCV的詳細介紹:請點這裡
OpenCV的下載地址:請點這裡