OpenCV学习笔记

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章概述

OpenCV 是有Intel公司资助的开源计算机视觉库,它由一系列C函数和少量C++类构成,实现图像处理和计算机视觉方面的很多通用算法。

1、OpenCV的特征

(1)开源计算机视觉库采用C/C++编写

(2)使用目的是开发实时的应用程序

(3)独立于操作系统、硬件和图形管理器

(4)具有通用的图像/视频载入、保存和获取模块

(5)具有底层和高层的应用开发包

2、OpenCV的功能

(1)对图像数据的操作,包括分配、释放、复制、设置和转换数据

(2)对图像和视频的输入输出,指文件和摄像头作为输入,图像和视频文件作为输出(3)具有对矩阵和向量的操作及线性代数的算法程序,包括矩阵积、解方程、特征值以及奇异值

(4)可对各种动态数据结构,如列表、队列、集合、树和图等进行操作

(5)具有基本的数字图像处理能力,如可以进行滤波、边缘检测、角点检测、采样于差值、色彩转换、形态操作、直方图和图像金字塔等操作

(6)对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hough变换、多边行逼近、直线拟合、椭圆拟合、和Delaunay三角划分等

(7)对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应

(8)对运动的分析,如对光流、运动分割和跟踪的分析

(9)对目标的识别,如可采用特征法和隐马尔科夫模型(HMM)法

(10)具有基本的GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等(11)课对图像标注,如对线,二次曲线和多边行进行标注

3.OpenCV模块

∙cv –核心函数库

∙cvaux –辅助函数库

∙cxcore –数据结构与线性代数库

∙highgui – GUI函数库

∙ml –机器学习函数库

第3章OpenCV基础

3.1 OpenCV命名规则

1、函数命名规则

通用函数名为cvActionTargetMod(……)

其中,Action 表示核心函数(如:set,create)

Target表示目标图像区域(如:轮廓,多边形)

Mod表示可选变种(如:变量类型)

2、矩阵数据类型

通用矩阵数据类型为CV_(S|U|F)C

其中,S表示带符号整数

U表示无符号整数

F表示浮点数

例如:CV_8UC1表示8位无符号单通道矩阵

3、图像数据类型

通用图像数据类型为IPL_DEPTH_(S|U|F)

例如:IPL_DEPTH__8U表示无符号整数图像

4、头文件

#include

#include

#include

#include//不是必须的,它包含在cv.h中

3.2基本数据结构

1、图像结构

OpenCV中德所有图像采用同一个结构IplImage

2、矩阵与向量结构

OpenCV采用一种独特的结构CvArr*,该结构是一个通用数组的变现形式,用做函数的参数,说明函数在调用该函数时接受多种类型的输入数据形式。

3、其他数据结构

(1)点的表示

点的数据结构有以下三种:

CvPoint p=cvPoint(int x,int y)

CvPoint2D32f p=CvPoint2D32f(float x,float y)

CvPoint2D32f p=CvPoint2D32f(float x,float y,float z)

(2)长方形维数的表示

表示长方形维数的数据结构及用法

CvSize r=cvSize(int width,int height)

CvSizeD32f r=cvSize32f(float width,float height)

(3)有偏移量的长方形表示

CvRect r=cvRect(int x,int y,int width,int height)

3.3 矩阵的使用与操作

3.3.1 分配与释放矩阵

在OpenCV中,向量被当成行货列为1的矩阵,并且矩阵在内存中德存储方式是按行存储,且每行按4字节对齐。

(1)分配矩阵

分配矩阵的函数原型为:

CvMat* cvCreateMat(int rows,int cols,int type)

其中type表示矩阵元素的类型,可以用如下形式表达

CV_ (S|U|F)C

(2)释放矩阵

释放矩阵的函数原型为void cvReleaseMat(CvMat**)

(3)复制矩阵

复制矩阵的函数原型

CvMat *cvCloneMat(CvMat*)

3.3.2 访问矩阵元素

若访问一个浮点数矩阵的第i行第j列元素,可采用以下几种方式

(1)直接访问M(i,j)

cvmSet(M,i,j,2.0)//SET M(i,j)

(2)已知对齐方式的直接访问

3.4 GUI命令

3.4.1 窗口管理

(1)创建及定位一个窗口

cvNamedWindow("wins",CV_WINDOW_AUTOSIZE)

cvMovewindow("win1",100,100)//偏移量从屏幕的左上角算起

(2)加载一副图像

具体事例

IplImage * image=0;

Img=cvLoadImage(fileName)

If(img)printf(“Could not load image file:%s \n”,filename);

(3)显示一副画像

具体操作语句实例为:cvShowImage("win1",img)

(4)关闭窗口

相关文档
最新文档