关闭

OpenCV在ARM上的移植

796人阅读 评论(0) 收藏 举报
分类:

OpenCV在ARM上的移植

与X86 Linux类似,请参考: Linux 下编译安装OpenCV 本文在此基础上进行进一步操作。

网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方法很麻烦,不仔细操作很容易出错,我的方法是尽可能的利用现成的工具,尽量图形化界面配置操作,方便编译配置。

软硬件环境

宿主机:Ubuntu 12.04 32bit

开发板:OK6410

OpenCV: 2.4.3

其他:

arm-linux-g++ 4.3.2 / arm-linux-gcc 4.3.2

CMake-gui 2.8.10

Cmake的安装

OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。

ubuntu下安装cmake比较简单,

apt-get install cmake

如果觉得自带的版本不符合要求,可以下载安装包。

下载最新版的安装包:

http://www.cmake.org/cmake/resources/software.html

这里下载已经编译好的,这样只需要解压至需要的目录下即可使用:

tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/

设置环境变量:

sudo gedit /home/emouse/.bashrc

在打开的文件后添加:

export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin

查看版本,测试是否安装成功:

root@emouse:/home# cmake --version
cmake version 2.8.10.2

转载注明:http://emouse.cnblogs.com/ 

OpenCV 的交叉编译

解压OpenCV压缩文件,得到文件夹。

#cmake-gui 打开cmake的gui界面,开始进行配置,配置过程如下图所示:

1、选定解压后的源文件和将要编译的文件目录,这个自己之前先建好。

2、点击Configure 选择工程类型,选择交叉编译,点击下一步。

image

3、在下图的界面中选择交叉编译工具链以及库文件相关信息,按照图中的进行填写,其中红框部分为交叉编译工具链的实际路径,根据宿主机实际安装路径填写。

image

4、点击Finsh完成初步配置。

5、此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,这里去掉WITH_TIFF支持并修改安装路径,其他配置可以根据需求选择。

image

通过终端进入OpenCV-ARM目录,make编译,编译过程中出错如下:

复制代码
Linking CXX executable ../../bin/opencv_perf_core
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_init'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_unlock'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemset'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler'
../../lib/libopencv_core.so: undefined reference to `pthread_key_create'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp'
../../lib/libopencv_core.so: undefined reference to `pthread_getspecific'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree'
../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_lock'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc'
../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_destroy'
../../lib/libopencv_core.so: undefined reference to `pthread_once'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'
../../lib/libopencv_core.so: undefined reference to `clock_gettime'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_trylock'
../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'
../../lib/libopencv_core.so: undefined reference to `pthread_setspecific'
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_perf_core] 错误 1
make[1]: *** [modules/core/CMakeFiles/opencv_perf_core.dir/all] 错误 2
make: *** [all] 错误 2
复制代码

关于TIFF的报错,是因为一开始我勾选了TIFF的支持,而这个支持是需要宿主机中安装相应的程序的,所以报错,可以打开cmake 去掉勾选。 其他报错经过查找找到以下解释:

编译时发现如下错误:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libcxcore.so: undefined reference to `clock_gettime'
../../lib/libcxcore.so: undefined reference to `pthread_key_create'
../../lib/libcxcore.so: undefined reference to `pthread_getspecific'
../../lib/libcxcore.so: undefined reference to `pthread_setspecific'

原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项

此时需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt

按照此方法更改对应文件,如下图所示:

image

此处在CMakeCache.txt 的173行,添加-lpthread -lrt,然后继续编译。编译过程十来分钟左右,编译成功结果如下:

image

运行make install进行安装,在我的安装目录中就会多出以下几个文件夹:

image 

lib文件夹即生成的库文件,拷贝到开发板对应目录即可。

★emouse 思·睿博客文章★原创文章转载请注明:http://emouse.cnblogs.com
1
0
查看评论

matlab编译C++库,在visual studio中调用

在c++开发过程中需用用到matlab来画图,需要把matlab函数编译成c++可以调用的dll库 如果matlab版本和visual studio 的版本匹配,直接在matlab命令行执行以下命令就可以 mex  -setup 选中c++编译器 mcc -W cpplib:xxx...
  • student_swu
  • student_swu
  • 2017-12-27 19:59
  • 36

OpenCV移植到ARM 全过程

我的环境 Host:VMware + Ubuntu 10.04 Target:Real6410 with Linux 2.6.38 Crossing Compiler:arm-linux-gcc 4.4.3  一  交叉编译链的安装 1  ...
  • jemofh159
  • jemofh159
  • 2012-05-10 14:12
  • 19319

opencv在arm和x86上的移植

这篇文章重点还是将如何安装Opencv到linux下,并且配置Opencv到QT中,并实现在x86和arm平台上能够顺利运行qt+Opencv的GUI程序。为将来做嵌入式模式识别搭建一个快速方便的平台。
  • yzysj123
  • yzysj123
  • 2014-07-30 23:20
  • 23329

Linux下安装opencv并移植至ARM

目的:OpenCV是Intel支持的开源计算机视觉库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。它不依赖于其它的外部库—尽管也可以使用某些外部库。OpenCV使用BSD License,对非商业应用和商业应用都可以免费使用。OpenCV的主要应用环境是Wind...
  • sinat_26551021
  • sinat_26551021
  • 2016-11-24 22:25
  • 2135

opencv移植到arm开发板

1.opencv移植到arm开发板的过程 2.Libv4l2的移植
  • cjj1130320082
  • cjj1130320082
  • 2016-07-20 20:54
  • 2566

Opencv2.0移植ARM(Cortex A8)全过程

前言        本人在移植Opencv到ARM-linux系统上经历坎坷的路程,由当初师兄手把手教如何交叉编译移植一个不成功的Opencv1.0的交叉编译库(ffmpeg一直移植不成功)。到之后在项目中需要ffmpeg解码,想方...
  • liu448077268
  • liu448077268
  • 2014-09-10 13:05
  • 1312

opencv2.0移植到ARM

opencv20移植到arm 背景 第一次移植 第二次arm移植 遇到的几个问题测试成功样例opencv2.0移植到arm背景最近做实验需要将opencv移植到arm平台。刚开始也是一头雾水啊。之前学的opencv都是opencv2.4.7以后的。再写测试程序的时候也遇到了一些问题。后面会写到。但是...
  • xiaoxiaodongshige
  • xiaoxiaodongshige
  • 2016-07-11 20:22
  • 983

ARM开发板系统的配置及OpenCV的安装配置

首先有一个arm的开发板(我的是DE1-SoC Cyclone V),所需的系统镜像文件(ubuntu12.04),及烧写SD卡工具(Win32DiskImager),编译好的OpenCV程序包。这些软件可以在这里下载到下载链接。 1. 系统镜像烧到SD卡中所需的工具是Win32DiskImager...
  • herhero
  • herhero
  • 2016-03-17 13:49
  • 2587

opencv移植到arm教程

  • 2016-04-01 10:58
  • 662KB
  • 下载

opencv2.4.9移植到arm板上

一:环境      ubuntu 14.0.4      交叉编译器:4.5.1 二:交叉编译器的安装(后面有所有的文件下载地址) 三:依赖库的安装:(没写解压的命令)   1):       &#...
  • XZY_OK
  • XZY_OK
  • 2017-06-19 10:48
  • 812
    个人资料
    • 访问:1926461次
    • 积分:22082
    • 等级:
    • 排名:第394名
    • 原创:102篇
    • 转载:1382篇
    • 译文:6篇
    • 评论:261条
    联系方式
    个人邮箱: xuxiduo@zju.edu.cn
    QQ群:
    1)OpenCV俱乐部
        186168905

    2) 视频/音频/图像/算法/ML
        群1:148111910

        群2:157103105

    备注:加群需要回答问题,避免广告党。
    如果你是博客看到后加的,请注明“博客”并回答问题,只注明”博客“不回答问题的恕不加入。答案为和群相关的任何技术名词,不能出现1)和2)中的任何字眼
    博客专栏
    文章分类
    最新评论