1、OpenCV的简介

       开源的计算机视觉类库OpenCV( IntelÒ Open Source Computer Vision Library)由英特尔公司位于俄罗斯的研究实验室所开发,它是一套可免费获得的由一些C 函数和C ++ 类所组成的库,用来实现一些常用的图像处理及计算机视觉算法]。由于OpenCV 的源代码是完全开放的,而且源代码的编写简洁而又高效,特别是其中大部分的函数都已经过汇编最优化,以使之能高效而充分地利用Intel系列处理芯片的设计体系,OpenCV 的代码执行效率是非常高的,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理软件。
2.1.1 OpenCV 的特点
相对于其它常用的图像处理软件来说,OpenCV有其显著的不可比拟的优点,主要体现在如下几个方面[1]:
(1)OpenCV是一个包含了超过300 个C 函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库。
(2)高性能:OpenCV 中所有的算法都是基于封装于IPL 的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel 公司针对其所生产的处理器进行了优化。
(3)开放性:不管对于商业的还是非商业的用途,OpenCV都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用。
(4)可移植性:由于OpenCV的大部分库函数基本上采用C或C++语言编写,因此可以方便地移植到其它如ARM、MPIS等嵌入式微处理器中。
2.1.2 OpenCV 的函数体系
    OpenCV 中每个函数的命名都以“cv”开始,然后是该函数的行为及目标。例如用来创建图像的函数“cvCreateImage”,载入图像的函数“cvLoadImage”。OpenCV是为图像处理及计算机视觉在实际工程中的应用而设计的一个类库,其中所有的函数都由于其在实际应用中所实现的不同的功能而分属不同的类型,主要的函数类型有:
(1)基本的图像处理与分析函数:这个类型的函数主要用于实现一些基本的图像处理与分析功能,例如图像平滑函数cvSmooth,Sobel 算子cvSobel,Canny 边缘分割函数cvCanny 等。
(2)结构分析函数:包括有轮廓处理函数,几何学函数以及平面细分函数。
(3)运动分析与目标跟踪函数:包括有用于运动分析与目标跟踪的函数,例如背景重建函数cvAcc,用光流法或动态轮廓模型来实现目标跟踪的函数cvCalcOpticalFlowBM 和cvSnakeImage 以及卡尔曼滤波函数CvKalman等。
(4)摄像机标定和3D 重建函数:包括有用于摄像机标定,姿态估计以及从两个摄像机进行3D 相似重构的函数。
(5)GUI 与视频处理函数:包括有高级图形用户接口highGUI 用以实现对图像的载入、显示及保存等基本操作以及用以实现视频输入输出及处理的函数。
根据上述的函数体系,程序开发者可以根据自己所开发应用程序所要实现的功能来方便地选择所需的库函数,从而大大减少开发时间和精力,缩短程序开发的周期。
2、Opencv移植
     

linux 下 opencv2.0.0 的移植 (ARM11)

环境:

PC机系统:Fedora 8

交叉编译工具 :arm-linux-gcc-4.5.1

解压:OpenCV-2.0.0.tar.bz2

#cd  OpenCV-2.0.0

#./configure --host=arm-linux --without-gtk --without-carbon 
--without-quicktime --without-1394libs --without-ffmpeg 
--without-python --without-swig --enable-static --enable-shared 
--disable-apps  CXX=arm-linux-g++  CPPFLAGS=-I/opt/FriendlyARM/too
lschain/4.5.1/arm-none-linux-gnueabi/include   LDFLAGS=-L/opt/Frie
ndlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib --with-v4l2 
--prefix=/opt/arm-2.0.0/opencv

#make

#make install

?  --host=arm-linux 指定主机

?  --without-gtk:      不编译gtk

?  --without-carbon:

?  --without-quicktime

?  --without-1394libs

?  --without-ffmpeg

?  --without-python

?  --without-swig

?  --enable-static   编译静态库*.a文件

?  --enable-shared  编译为动态库*.so文件

?  CXX=arm-linux-g++

?  CPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include:OpenCV会用到一些dev的包,如png.h,jpeglib.h头,大部分文件在/usr/include下。

?  LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib

?  --prefix=/opt/arm/opencv 安装编译好的库文件头文件存放的位置


3、移植库到ARM11板子

将/opt/arm/opencv/lib里的

libcvaux.so.4.0.0

libcv.so.4.0.0

libcxcore.so.4.0.0

libhighgui.so.4.0.0

libml.so.4.0.0

拷出来全部重命名

*.so.4

将这些文件拷贝到ARM11板子的/lib目录下。。。

4、测试是否一致成功。。。

arm-linux-g++   XX.c -o XX -I/opt/arm-2.0.0/opencv/include/opencv -L/opt/arm-2.0.0/opencv/lib/ -lcv -lcxcore -lcvaux -lml -lhighgui

Then , Enjoy........