安装环境

宿主机:

Red Hat Enterprise Linux Server 6.3

开发板:

mini2440

相关软件:

cmake-3.5.1.tar.gz、OpenCV-2.3.1a.tar.bz2

下载地址:

CMake:

https://cmake.org/files/v3.5/cmake-3.5.1.tar.gz

OpenCV:

http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2

安装过程

CMake安装

说明:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。用它来产生OpenCV编译时用到的Makefile文件。

步骤:

1.解压

tar xvf cmake-3.5.1.tar.gz

cd cmake-3.5.1

2.配置

./configure --prefix=/usr  //生成Makefile,安装位置/usr

3.编译

make   //通过Makefile编译源代码

4.安装

make install   //文件安装在/usr/路径下

5.测试

cmake   //执行cmake命令显示cmake版本号和帮助信息表示安装成功

OpenCV安装

说明:

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库。编译和运行调用OpenCV库函数的程序时需要用到OpenCV库和头文件。

1.解压

tar xvf OpenCV-2.3.1a.tar.bz2

cd OpenCV-2.3.1

2.配置

2.1.编写配置文件

vim toolchain.cmake

# this one is important
SET(CMAKE_SYSTEM_NAME Linux) # specify the cross compiler
SET(CMAKE_C_COMPILER /usr/local/arm/4.3./bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /usr/local/arm/4.3./bin/arm-linux-g++) # where is the target environment
SET(CMAKE_FIND_ROOT_PATH /usr/local/arm/4.3.) # search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

2.2.生成编译文件

mkdir _install   //创建安装目录

cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DCMAKE_INSTALL_PREFIX=${PWD}/_install/   //生成Makefile

2.3.修改编译文件

ccmake .

WITH_FFMPEG                      OFF   //关闭视频解码,如果需要先编译相关库
WITH_GSTREAMER OFF //关闭视频解码,如果需要先编译相关库
WITH_GTK OFF //关闭图形界面,如果需要先编译相关库
WITH_TIFF OFF //关闭图片格式,如果需要先编译相关库

按下c生效配置,按下e退出配置,按下q退出配置。

3.编译

make   //通过Makefile编译源代码

如果遇到错误:

/space/work/thesis/000/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h:63:error: 'fabsl' was not declared in this scope。

修改fabsl为fabs,然后继续make。

如果遇到错误:

Linking CXX executable ../../bin/opencv_test_calib3d

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

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

../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete'

../../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_setspecific'

collect2: ld returned 1 exit status

修改/opt/opencv2.3.1目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread –lrt,然后继续make。

4.安装

make install   //文件安装在${PWD}/_install/路径下

5.测试

5.1.编写Makefile

vim Makefile

prefix = .../OpenCV-2.3./_install
libdir = $(prefix)/lib
includedir_old = $(prefix)/include/opencv
includedir_new = $(prefix)/include Libs = -L$(libdir) -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflag = -I$(includedir_old) -I$(includedir_new) % : %.c
arm-linux-g++ $(Libs) $(Cflag) $^ -o $@ % : %.cpp
arm-linux-g++ $(Libs) $(Cflag) $^ -o $@

5.2.编写测试程序

vim test.cpp

#include <stdio.h>
#include <cv.h>
#include <highgui.h> using namespace cv; int main(int argc, char **argv){
//参数检测
if(argc != ){
printf("Usage:\n\%s <image.jpg>", argv[]);
} //打开图片
Mat src; src = imread(argv[], ); //灰度转换 //保存图片
imwrite("dst.jpg", src); return ;
}

5.3.复制程序和链接库到开发板

cp .../OpenCV-2.3.1/_install/lib/* .../rootfs/lib/

cp test .../rootfs/sbin

5.4.运行程序

./test image.jpg   //如果成功保存灰度图片说明移植成功

如果缺少相关库通过下面命令查找并复制到开发板

arm-linux-gcc -print-file-name=libxxx.so

cp .../lib/libxxx.* .../rootfs/lib

参考文档

http://blog.csdn.net/embeddedman/article/details/7416934

http://blog.csdn.net/eagelangel/article/details/7232364

http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html

http://blog.sina.com.cn/s/blog_5ca0198e0101iphz.html

http://blog.csdn.net/wc7620awjh/article/details/8268447

http://www.tuicool.com/articles/yAFnQ3

http://blog.sina.com.cn/s/blog_627bb2cf0101ge3r.html

http://www.vtk.org/Wiki/CMake_Cross_Compiling#Setting_up_the_system_and_toolchain

相关移植

libtiff交叉编译

./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --prefix=${PWD}/_install/

make

make install

file libtiff.so.5.2.4   //查看版本是否为ARM

cp _install/lib/* .../rm-none-linux-gnueabi/libc/armv4t/usr/lib -rf   //复制到编译器链接库目录

cp _install/inclue/* .../rm-none-linux-gnueabi/libc/armv4t/usr/inclue -rf   //复制到编译器头文件目录

arm-linux-gcc -print-file-name=libtiff.so   //显示库全路径表示已经生效

cp _install/lib/* .../rootfs/lib -rf   /复制到开发板链接库目录

ffmpeg交叉编译

./configure --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=arm-linux-  --enable-shared --prefix=${PWD}/_install

make

make install

file libavcodec.so.53.8.0   //查看版本是否为ARM

cp _install/lib/* .../rm-none-linux-gnueabi/libc/armv4t/usr/lib -rf   //复制到编译器链接库目录

cp _install/inclue/* .../rm-none-linux-gnueabi/libc/armv4t/usr/inclue -rf   //复制到编译器头文件目录

arm-linux-gcc -print-file-name=libavcodec.so   //显示库全路径表示已经生效

cp _install/lib/* .../rootfs/lib -rf   /复制到开发板链接库目录

[学习OpenCV攻略][017][ARM9下移植OpenCV]的更多相关文章

  1. [学习OpenCV攻略][016][RedHat下安装OpenCV]

    安装环境 操作系统: Red Hat Enterprise Linux Server 6.3 相关软件: ffmpeg-0.8.15.tar.bz2.cmake-3.5.1.tar.gz.OpenCV ...

  2. [OpenCV][ARM9下移植OpenCV]

    [OpenCV][ARM9下移植OpenCV]   安装环境 宿主机: Red Hat Enterprise Linux Server 6.3 开发板: mini2440 相关软件: cmake-3. ...

  3. [学习OpenCV攻略][002][Ubuntu下OpenCV安装]

    配置环境 操作系统 Ubuntu 12.04 OpenCV版本 opencv-1.0.0 学习书籍 <学习OpenCV> Liunx软件安装方法主要有3种: 1.编译安装,也就是通过编译源 ...

  4. Davinci DM6446开发攻略——u-boot-1.3.4移植(1)

    UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2,而TI最新的EVM开发包里的UBOOT是1.2.0版本,国内很多公司还一直使用u-boot-1.1.4和 ...

  5. DM6446开发攻略——u-boot-1.3.4移植(1)

    http://zjbintsystem.blog.51cto.com/964211/282387转载   UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2 ...

  6. Davinci DM6446开发攻略——linux-2.6.18移植

     TI DAVINCI 使用最新的内核是montavista linux-2.6.18,之前说过,国内很多公司,包括开发板的软件包,一直在使用montavista linux-2.6.10,这个版本准 ...

  7. [学习OpenCV攻略][011][显示图片]

    学习资料: http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html   包含头文件 core.hpp:包含 ...

  8. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

    博主之前写过一篇文章<html5与EmguCV前后端实现——人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...

  9. [学习OpenCV攻略][013][Mat - 基本图像容器]

    Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针. 矩阵属于多个 Mat 对象, ...

随机推荐

  1. Linux第七节随笔 diff /uniq /stat

    linux第七讲(上)1.diff link 作用:diff命令能比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处. 如果指定比较的是 ...

  2. javascript计算对象的长度

    计算对象的长度,即获取对象属性的个数 方法一:通过for in 遍历对象,并通过hasOwnProperty判断是否是对象自身可枚举的属性 var obj = {"c1":1,&q ...

  3. 如何用Visio画venn(维恩)图

    今天需要换几个Venn(维恩)图,按照以前的套路是用画图工具来画的,但是这次不是画给自己看,并且也要很迅速的画好,那就迅速的来学习了. 参考网址:https://support.office.com/ ...

  4. 一种优雅的条件引用第三方.net库的方法

    1.遇到的问题 今年我一直在开发一个WebApiClient库,旨在.net下能像java的retrofit一样,方便地请求服务端的http接口.在这restful api盛行的年代,json的身影无 ...

  5. 关于 Python 入门的一些问题?

    一.用 python 能够做什么?解决什么问题? A1:理论上来说,计算机能做什么,python 语言就能让它做什么,也即 python能做什么. 数值计算.机器学习.爬虫.云相关开发.自动化测试.运 ...

  6. 正确显示textarea中输入的回车和空格

    在textarea中输入的文本.如果含有回车或空格.在界面上显示的时候则不那么正常.回车消失了,空格变短了. 如何解决这个问题呢.有2种方法. 1.使用<pre>标签 w3c对pre元素是 ...

  7. C#WinCE程序(.NET Compact Framework 3.5)项目重构面向抽象设计

    重构关注点 遵循开闭原则 面向抽象设计 实现设备程序端可动态配置 重构的需求 领导想省事提出需求,将现有PDA程序修改为支持PC端由电器工程师根据实际的生产流程可配置,PDA程序在读取配置文件后动态生 ...

  8. Mac操作系统下忘记MYSQL的密码

    1. 在系统偏好 中,中止MySQL服务.: 2. cd/usr/local/mysql/bin   sudo ./mysqld_safe --skip-grant-tables 3. 登录MySQL ...

  9. Python模块学习---Web

    import urlparse url = urlparse.urlparse("http://www.python.org/doc/FAQ.html") print url pr ...

  10. JavaScript(jquery)实现二级菜单联动

    为什么写这篇随笔? 二级菜单的联动一直是我心中一块石头,犹记得大一的时候只会用一点的Dreamweaver,当时做二级菜单难受啊,啥都不会,网上找了些资料,也看不懂别人的代码更别说用起来了 前些日子. ...