opencv在hisi上的移植总结

经本人尝试opencv249在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

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/hisiv200-opencv249.pc

然后启用配置sudo ldconfig

3、配置PKG_CONFIG_PATH

#gedit /etc/bash.bashrc

#source /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()等显示函数

时间: 2024-10-22 23:36:16

opencv在hisi上的移植总结的相关文章

opencv在arm和x86上的移植

一.开发环境 操作系统:fedora14 Opencv版本:2.0 Qt版本:4.7 arm:mini6410 交叉编译工具:arm-linux-gcc-4.5.1 二.安装与配置 Linux系统的安装,交叉Qt-creator的安装还有交叉编译工具的安装,网上说的基本都没什么问题,测试后都可以用.这里安装Qt-Creator遇到了一点小问题,按照网上的和mini6410开发手册上的安装方法太复杂了,用QtSdk-offline-linux-x86-v1.2.1.run安装方便又准确. 这篇文章

ORB_SLAM2在Android上的移植过程

作者:Frank 转载请注明出处 一直没时间写博客,最近抽时间写了些关于在ORB_SLAM2在Android上的移植过程,也算是点经验吧. 写完后一个手贱点了个链接,瞬间1/3工作量没了,深夜弄完也是醉了... 正文开始 这篇博客讲述如何在Android平台上移植ORB_SLAM2,讲述过程包括基本的Android环境的搭建和NDK环境的配置,Android下移植的基本概念,ORB的具体移植步骤等. Android平台搭建和NDK环境配置 系统:windows7 32bit IDE:Eclips

OpenCV 为啥勾搭上 OpenGL

OpenCV 为啥勾搭上 OpenGL? Vinjn张静· 2 年前 如果读者留意 OpenCV 2.3 之后的版本,那么会发现 cv::ogl namespace,ogl 自然是 OpenGL了.一个三维计算机图形库为何出现在计算机视觉中,传统的 CV 开发者是否需要学习它,这些问题待我一一来回答. 问题一:为何引入 OpenGL? 在 2.3 之前 OpenCV 的渲染部分都是由 CPU 来实现的,不论是画线还是把图片显示到屏幕上.这有两个问题,速度慢,同时没法画三维物体.引入 OpenGL

openCV在ubuntu上的使用(0)

首先是两个安装的链接: http://www.tuicool.com/articles/nYJrYra http://my.oschina.net/u/1757926/blog/293976我使用的是ubuntu14.04版本,64位的.在sourceforge上下载的压缩文件,最新的版本按照上面的实例无法安装.我这边装了个较就的版本,2.4.8版本,临时还算够用.同时,也可以在github上面下载最新版本的源代码,同样的进行编译安装.https://github.com/上面搜索openCV,

uCOS 在 NIOS II 上的移植

工具:Quartus II 器件:EP4CE15F17C8 1.File->New Project Wizard: 2.点击两个Next,进入Family&Device Settings,选择器件 3.Finish,建立工程完毕,点击Tools->SOPC Builder,输入名字后,OK 4.修改clk_0为100MHz 5.component library中搜索nios,双击Nios II Processer 6.Finish 7.搜索epcs,双击epcs Serial...F

16C554在LINUX上的移植(AT91)

16C554在LINUX上的移植(AT91) linux版本:2.6.30 AT91SAM9263 修改串口扩展驱动: 1,在/drivers/serial/下以8250_exar_st16c554.c文件为模板创建8250_at91_xr16v554.c文件:修改相应的PORT和中断号,修改Platform device ID为 PLAT8250_DEV_AT91_XR16V554:在init函数中加入了对总线,及中断口的初始化操作::在文件/include/linux/serial_8250

《UIP在NIOS上的移植》

移植环境:Cyclone IV 开发板,网卡芯片为ENC28J60,浏览器(Firefox_24.0.0.5001a) 首先,需要了解网卡芯片ENC28J60,有中文版的说明书:http://wenku.baidu.com/link?url=79r8JOHiGAyAG9kX9-fOYIRh41jfSyRkxPIdAW9XIzdPjIT5Jbh8gjIobjcsIekhYm-4TiSqnXFd74e2tF1bE2WxUPUiEws0RfrDIw9pRKS ENC28J60并不是一款标准的以太网PH

SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件架构的思想,感觉linux SPI驱动很强大,水很深,废话少说,SPI总线上有两类设备:一类是主机端,通常作为SOC系统的一个子模块出现,比如很多嵌入式MPU中都常常包含SPI模块.一类是从机被控端,例如一些SPI接口的Flash.传感器等等.主机端是SPI总线的控制者,通过使用SPI协议主动发起S

OpenCV在矩阵上的卷积

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992 OpenCV在矩阵上的卷积 在openCV官网上说是戴面具,事实上就是又一次计算一下矩阵中的每个value,那么怎么计算呢,依据该像素点的周围信息,用一个加权的公式来进行计算.那么如今就要看,周围的信息是怎样被加权的.让我们想一下这种方式,请看以下的公式: 上面的公式就是根据当前像素点的值和四个邻居的值,更新一下.相当于原来矩阵每一块3*3的小矩阵和M进行想乘一样. 在程序中,我们对该公式进行编程的话,会是