歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

OpenCV在Hisi上的移植總結

經本人嘗試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的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved