logo资料库

Opencv中文手册.pdf

第1页 / 共239页
第2页 / 共239页
第3页 / 共239页
第4页 / 共239页
第5页 / 共239页
第6页 / 共239页
第7页 / 共239页
第8页 / 共239页
资料共239页,剩余部分请下载后查看
CvPoint
CvPoint2D32f
CvPoint3D32f
CvSize
CvSize2D32f
CvRect
CvScalar
CvTermCriteria
CvMat
CvMatND
CvSparseMat
IplImage
CvArr
数组操作
CreateImage
CreateImageHeader
ReleaseImageHeader
ReleaseImage
InitImageHeader
CloneImage
SetImageCOI
GetImageCOI
SetImageROI
ResetImageROI
GetImageROI
CreateMat
CreateMatHeader
ReleaseMat
InitMatHeader
Mat
CloneMat
CreateMatND
CreateMatNDHeader
ReleaseMatND
InitMatNDHeader
CloneMatND
DecRefData
IncRefData
CreateData
ReleaseData
SetData
GetRawData
GetMat
GetImage
CreateSparseMat
ReleaseSparseMat
CloneSparseMat
获取元素和数组子集
GetSubRect
GetRow, GetRows
GetCol, GetCols
GetDiag
GetSize
InitSparseMatIterator
GetNextSparseNode
GetElemType
GetDims, GetDimSize
Ptr*D
Get*D
GetReal*D
mGet
Set*D
SetReal*D
mSet
Clear*D
拷贝和添加
Copy
Set
SetZero
变换和置换
Reshape
ReshapeMatND
Repeat
Flip
Split
Merge
算术,逻辑和比较
LUT
ConvertScale
ConvertScaleAbs
Add
AddS
AddWeighted
Sub
SubS
SubRS
Mul
Div
And
AndS
Or
OrS
Xor
XorS
Not
Cmp
CmpS
InRange
InRangeS
Max
MaxS
Min
MinS
AbsDiff
AbsDiffS
统计
CountNonZero
Sum
我个人认为:CvScalar用来返回cvSum函数的计算结果,由于图像最多可能有四个通道,所以要用CvScalar来存放。CvScalar定义在cxcore中
//-----------------------------------------------------------------------------------------
Avg
AvgSdv
MinMaxLoc
Norm
线性代数
SetIdentity
DotProduct
CrossProduct
ScaleAdd
GEMM
Transform
PerspectiveTransform
MulTransposed
Trace
Transpose
Det
Invert
Solve
SVD
SVBkSb
EigenVV
CalcCovarMatrix
Mahalonobis
数学函数
Round, Floor, Ceil
Sqrt
InvSqrt
Cbrt
FastArctan
IsNaN
IsInf
CartToPolar
PolarToCart
Pow
Exp
Log
随机数生成
RNG
RandArr
RandInt
RandReal
离散变换
DFT
MulSpectrums
DCT
动态结构
内存存储(memory storage)
CvMemStorage
CvMemBlock
CvMemStoragePos
CreateMemStorage
创建内存块
CreateChildMemStorage
ReleaseMemStorage
ClearMemStorage
MemStorageAlloc
MemStorageAllocString
SaveMemStoragePos
RestoreMemStoragePos
Sequences
CvSeq
CvSeqBlock
CvSlice
CreateSeq
SetSeqBlockSize
SeqPush
SeqPop
SeqPushFront
SeqPopFront
SeqPushMulti
SeqPopMulti
SeqInsert
SeqRemove
ClearSeq
GetSeqElem
SeqElemIdx
CvtSeqToArray
MakeSeqHeaderForArray
SeqSlice
CloneSeq
SeqRemoveSlice
SeqInsertSlice
SeqInvert
SeqSort
SeqSearch
查询序列中的元素
StartAppendToSeq
StartWriteSeq
EndWriteSeq
完成写入操作
StartReadSeq
GetSeqReaderPos
SetSeqReaderPos
Sets
CvSet
CreateSet
创建空的数据集
SetAdd
SetRemove
SetNew
SetRemoveByPtr
GetSetElem
ClearSet
Graphs
CvGraph
CreateGraph
GraphAddVtx
GraphRemoveVtx
GraphRemoveVtxByPtr
GetGraphVtx
GraphVtxIdx
GraphAddEdge
GraphAddEdgeByPtr
GraphRemoveEdge
GraphRemoveEdgeByPtr
FindGraphEdge
FindGraphEdgeByPtr
GraphEdgeIdx
返回与该边相应的索引值
GraphVtxDegree
GraphVtxDegreeByPtr
ClearGraph
删除图
CloneGraph
CvGraphScanner
图的遍历
StartScanGraph
NextGraphItem
ReleaseGraphScanner
Trees
CV_TREE_NODE_FIELDS
CvTreeNodeIterator
InitTreeNodeIterator
NextTreeNode
PrevTreeNode
TreeToNodeSeq
将所有的节点指针(即:指向树结点的指针)收集到线性表 sequence 中
InsertNodeIntoTree
RemoveNodeFromTree
绘图函数
曲线与形状
CV_RGB
Line
Rectangle
Circle
Ellipse
FillPoly
FillConvexPoly
PolyLine
文本
InitFont
PutText
GetTextSize
点集和轮廓
DrawContours
示例.  通过contour函数探测连通分支量
数据保存和运行时类型信息
文件存储
CvFileStorage
CvFileNode
CvAttrList
OpenFileStorage
ReleaseFileStorage
写数据
StartWriteStruct
EndWriteStruct
WriteInt
WriteReal
WriteString
WriteComment
StartNextStream
Write
WriteRawData
WriteFileNode
读取数据
GetRootFileNode
GetFileNodeByName
GetHashedKey
Example. Reading an array of structures from file storage
GetFileNode
GetFileNodeName
ReadInt
ReadIntByName
ReadReal
ReadRealByName
ReadString
ReadStringByName
Read
ReadByName
ReadRawData
StartReadRawData
ReadRawDataSlice
运行时类型信息和通用函数
CvTypeInfo
RegisterType
UnregisterType
FirstType
FindType
TypeOf
Release
Clone
Save
Load
其它混合函数
CheckArr
KMeans2
例子. 带 k-means 的高斯分布的随机群样例(Clustering random samples of multi-gaussian distribution with k-means)
SeqPartition
Example. Partitioning 2d point set.
错误处理和系统函数
错误处理
错误处理宏
错误处理宏的使用
GetErrStatus
SetErrStatus
GetErrMode
SetErrMode
Error
ErrorStr
RedirectError
cvNulDevReport cvStdErrReport cvGuiBoxReport
错误消息对话框
错误消息打印到标准错误输出 (在 Leaf  模式)
系统函数
Alloc
Free
GetTickCount
GetTickFrequency
RegisterModule
GetModuleInfo
UseOptimized
SetMemoryManager
SetIPLAllocators
依字母顺序函数列表
A
C
D
E
F
G
I
K
L
M
N
O
P
R
S
T
U
W
X
例子列表
CV 参考手册
图像处理
梯度、边缘和角点
Sobel
Laplace
Canny
PreCornerDetect
CornerEigenValsAndVecs
CornerMinEigenVal
FindCornerSubPix
GoodFeaturesToTrack
采样、差值和几何变换
InitLineIterator
例子:使用线段迭代器计算彩色线上象素值的和
SampleLine
GetRectSubPix
GetQuadrangleSubPix
例子:使用 cvGetQuadrangleSubPix 进行图像旋转
Resize
WarpAffine
2DRotationMatrix
WarpPerspective
WarpPerspectiveQMatrix
形态学操作
CreateStructuringElementEx
ReleaseStructuringElement
Erode
Dilate
MorphologyEx
滤波器与彩色变换
Smooth
Filter2D
Integral
CvtColor
Threshold
AdaptiveThreshold
金字塔及其应用
PyrDown
PyrUp
PyrSegmentation
连接部件
CvConnectedComp
FloodFill
FindContours
StartFindContours
FindNextContour
SubstituteContour
EndFindContours
图像与轮廓矩
Moments
GetSpatialMoment
GetCentralMoment
GetNormalizedCentralMoment
GetHuMoments
特殊图像变换
HoughLines
Example. 用 Hough transform 检测线段
DistTransform
用户自定义 3×3 mask (a=1, b=1.5)
用户自定义 5×5 mask (a=1, b=1.5, c=2)
直方图
CvHistogram
CreateHist
SetHistBinRanges
ReleaseHist
ClearHist
MakeHistHeaderForArray
QueryHistValue_1D
GetHistValue_1D
GetMinMaxHistValue
NormalizeHist
ThreshHist
CompareHist
CopyHist
CalcHist
Sample. 计算和显示彩色图像的 2D 色调-饱和度图像
CalcBackProject
CalcBackProjectPatch
Back Project Calculation by Patches
CalcProbDensity
匹配
MatchTemplate
MatchShapes
CalcEMD2
结构分析
轮廓处理函数
ApproxChains
StartReadChainPoints
ReadChainPoint
ApproxPoly
BoundingRect
ContourArea
ArcLength
CreateContourTree
ContourFromContourTree
MatchContourTrees
计算几何
MaxRect
CvBox2D
BoxPoints
FitEllipse
FitLine
ConvexHull2
例子. 由点集序列或数组创建凸外形                
CheckContourConvexity
CvConvexityDefect
Picture. Convexity defects of hand contour.
ConvexityDefects
MinAreaRect2
Picture. Minimal-area bounding rectangle for contour
MinEnclosingCircle
CalcPGH
平面划分
CvSubdiv2D
CvQuadEdge2D
CvSubdiv2DPoint
Subdiv2DGetEdge
Subdiv2DRotateEdge
Subdiv2DEdgeOrg
Subdiv2DEdgeDst
CreateSubdivDelaunay2D
SubdivDelaunay2DInsert
Subdiv2DLocate
FindNearestPoint2D
CalcSubdivVoronoi2D
ClearSubdivVoronoi2D
运动分析与对象跟踪
背景统计量的累积
Acc
SquareAcc
MultiplyAcc
RunningAvg
运动模板
UpdateMotionHistory
CalcMotionGradient
CalcGlobalOrientation
SegmentMotion
对象跟踪
MeanShift
CamShift
SnakeImage
光流
CalcOpticalFlowHS
CalcOpticalFlowLK
CalcOpticalFlowBM
CalcOpticalFlowPyrLK
预估器
CvKalman
CreateKalman
ReleaseKalman
KalmanPredict
KalmanCorrect
例子. 使用 Kalman 滤波器跟踪一个旋转的点
CvConDensation
CreateConDensation
ReleaseConDensation
ConDensInitSampleSet
ConDensUpdateByTime
模式识别
目标检测
CvHaarFeature, CvHaarClassifier, CvHaarStageClassifier, CvHaarClassifierCascade
cvLoadHaarClassifierCascade
cvReleaseHaarClassifierCascade
cvHaarDetectObjects
例子:利用级联的Haar classifiers寻找检测目标(e.g. faces).
cvSetImagesForHaarClassifierCascade
cvRunHaarClassifierCascade
照相机定标和三维重建
照相机定标
CalibrateCamera
CalibrateCamera_64d
Rodrigues
UnDistortOnce
UnDistortInit
UnDistort
FindChessBoardCornerGuesses
姿态估计
FindExtrinsicCameraParams
FindExtrinsicCameraParams_64d
CreatePOSITObject
POSIT
ReleasePOSITObject
CalcImageHomography
外极线几何
FindFundamentalMat
Example. Fundamental matrix calculation
ComputeCorrespondEpilines
按字母顺序的函数列表
2
A
B
C
D
E
F
G
H
I
K
L
M
N
P
Q
R
S
T
U
W
参考书目
• 基础结构 • 数组操作 o 初始化 o 获取元素和数组子集 o 拷贝和填充 o 变换和置换 o 算术、逻辑和比较 o 统计 o 线性代数 o 数学函数 o 随机数生成 o 离散变换 • 动态结构 o 内存存储 o 序列 o 集合 o 图 o 树 ----------------- • 绘图函数 **************************************** o 典线和形状 o 文本 o 点集和轮廓 • 数据保存和运行时类型信息 樊臻韬 o 文件存储 o 写数据 o 读数据 o 运行时类型信息和通用函数 ------------ --- • 其它混合函数 • 错误处理和系统函数 o 错误处理 o 系统函数 谭俊河 • 依字母顺序函数列表 • 例子列表 ------------------------ --- CvPoint 基于二维整形坐标轴的点 typedef struct CvPoint { int x; /* X 坐标, 通常以 0 为基点 */ int y; /* y 坐标,通常以 0 为基点 */ } CvPoint; /* 构造函数 */ inline CvPoint cvPoint( int x, int y ); /* 从 CvPoint2D32f 类型转换得来 */
inline CvPoint cvPointFrom32f( CvPoint2D32f point ); CvPoint2D32f 二维浮点坐标上的点 typedef struct CvPoint2D32f { float x; /* X 坐标, 通常以 0 为基点*/ float y; /* Y 坐标, 通常以 0 为基点*/ } CvPoint2D32f; /* 构造函数 */ inline CvPoint2D32f cvPoint2D32f( double x, double y ); /* 从 CvPoint 转换来 */ inline CvPoint2D32f cvPointTo32f( CvPoint point ); CvPoint3D32f 三维浮点坐标上的点 typedef struct CvPoint3D32f { float x; /* x-坐标,通常基于 0 */ float y; /* y-坐标, 通常基于 0*/ float z; /* z-坐标,通常基于 0 */ } CvPoint3D32f; /* 构造函数 */ inline CvPoint3D32f cvPoint3D32f( double x, double y, double z ); CvSize 矩形框大小,以像素为精度 typedef struct CvSize { int width; /* 矩形宽 */ int height; /* 矩形高 */ } CvSize; /* 构造函数 */ inline CvSize cvSize( int width, int height ); CvSize2D32f 以低像素精度标量矩形框大小 typedef struct CvSize2D32f {
float width; /* 矩形宽 */ float height; /* 矩形高 */ } CvSize2D32f; /* 构造函数*/ inline CvSize2D32f cvSize2D32f( double width, double height ); CvRect 矩形框的偏移和大小 typedef struct CvRect { int x; /* 方形的最左角的 x-坐标 */ int height; /* 高 */ } CvRect; /* 构造函数*/ inline CvRect cvRect( int x, int y, int width, int height ); int y; /* 方形的最上或者最下角的 y-坐标 */ int width; /* 宽 */ CvScalar 可存放在1-,2-,3-,4-TUPLE 类型的捆绑数据的容器 typedef struct CvScalar { double val[4] } CvScalar; /* 构造函数:用 val0 初始化 val[0]用 val1 初始化 val[1]等等*/ inline CvScalar cvScalar( double val0, double val1=0, double val2=0, double val3=0 ); /* 构造函数:用 val0123 初始化 val0123 */ inline CvScalar cvScalarAll( double val0123 ); /* 构造函数:用 val0 初始化 val[0],val[1]…val[3]用 0 初始化 */ inline CvScalar cvRealScalar( double val0 ); CvTermCriteria 迭代算法的终止标准 #define CV_TERMCRIT_ITER 1 #define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER #define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria { int type; /* CV_TERMCRIT_ITER 和 CV_TERMCRIT_EPS 的联合 */ int max_iter; /* 迭代的最大数 */ double epsilon; /* 结果的精确性 */ } CvTermCriteria; /* 构造函数 */ inline CvTermCriteria cvTermCriteria( int type, int max_iter, double epsilon ); /* 检查终止标准并且转换使 type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,并且满足 max_iter 和 epsilon 限制条件 */ CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria, double default_eps, int default_max_iters ); CvMat 多通道矩阵 typedef struct CvMat { int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型 和标记 */ int step; /* 以字节为单位的行数据长度*/ int* refcount; /* 数据参考计数 */ union { uchar* ptr; short* s; int* i; float* fl; double* db; } data; /* data 指针 */ #ifdef __cplusplus union { int rows; int height; }; union {
int cols; int width; }; #else int rows; /* 行数 */ int cols; /* 列数*/ #endif } CvMat; CvMatND 多维、多通道密集数组 typedef struct CvMatND { int type; /* CvMatND 标识(CV_MATND_MAGIC_VAL), 元 素类型和标号*/ int dims; /* 数组维数 */ int* refcount; /* 数据参考计数 */ union { uchar* ptr; short* s; int* i; float* fl; double* db; } data; /* data 指针*/ /* 每维的数据结构 (元素号,以字节为单位的元素之间的距离) 是配套定义的 */ struct { int size; int step; } dim[CV_MAX_DIM]; } CvMatND; CvSparseMat 多维、多通道稀疏数组 typedef struct CvSparseMat { int type; /* CvSparseMat 标识 (CV_SPARSE_MAT_MAGIC_VAL), 元素类型和标号 */ int dims; /* 维数 */
int* refcount; /* 参考数量 - 未用 */ struct CvSet* heap; /* HASH 表节点池 */ void** hashtable; /* HASH 表:每个入口有一个节点列表,有 相同的 "以 HASH 大小为模板的 HASH 值" */ int hashsize; /* HASH 表大小 */ int total; /* 稀疏数组的节点数 */ int valoffset; /* 数组节点值在字节中的偏移 */ int idxoffset; /* 数组节点索引在字节中的偏移 */ int size[CV_MAX_DIM]; /*维大小 */ } CvSparseMat; IplImage IPL 图像头 typedef struct _IplImage { int nSize; /* IplImage 大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数 OPENCV 函数支持 1,2,3 或 4 个通道 */ int alphaChannel; /* 被 OpenCV 忽略 */ int depth; /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U, IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */ char colorModel[4]; /* 被 OpenCV 忽略 */ char channelSeq[4]; /* 同上 */ int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜 色通道. 只有 cvCreateImage 可以创建交 叉存取图像 */ int origin; /* 0 - 顶—左结构, 1 - 底—左结构 (Windows bitmaps 风格) */ int align; /* 图像行排列 (4 or 8). OpenCV 忽略 它,使用 widthStep 代替 */ int width; /* 图像宽像素数 */ int height; /* 图像高像素数*/ struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区 域进行处理 */ struct _IplImage *maskROI; /* 在 OpenCV 中必须置 NULL */ void *imageId; /* 同上*/ struct _IplTileInfo *tileInfo; /*同上*/ int imageSize; /* 图像数据大小(在交叉存取格式下 imageSize=image->height*image->widthStep),单位字节*/
char *imageData; /* 指向排列的图像数据 */ int widthStep; /* 排列的图像行大小,以字节为单位 */ int BorderMode[4]; /* 边际结束模式, 被 OpenCV 忽略 */ int BorderConst[4]; /* 同上 */ char *imageDataOrigin; /* 指针指向一个不同的图像数据结 构(不是必须排列的),是为了纠正图像内存分配准备的 */ } IplImage; IplImage结构来自于 Intel Image Processing Library(是其本身所具 有的). OpenCV 只支持其中的一个子集: • alpha通道在 OpenCV中被忽略. • colorModel 和channelSeq 被OpenCV忽略. OpenCV颜色转换的 唯一个函数 cvCvtColor把原图像的颜色空间的目标图像的颜色 空间作为一个参数. • 数据顺序 必须是IPL_DATA_ORDER_PIXEL (颜色通道是交叉存 取), 然面平面图像的被选择通道可以被处理,就像COI(感兴趣 的通道)被设置过一样. • 当 widthStep 被用于去接近图像行序列,排列是被OpenCV忽略 的. • 不支持maskROI . 处理MASK的函数把他当作一个分离的参数. MASK在 OpenCV 里是 8-bit, 然而在 IPL他是 1-bit. • 名字信息不支持. • 边际模式和边际常量是不支持的. 每个 OpenCV 函数处理像素的 邻近的像素,通常使用单一的固定代码边际模式. 除了上述限制, OpenCV处理ROI有不同的要求.要求原图像和目标图像 的尺寸或 ROI的尺寸必须(根据不同的作操,例如cvPyrDown 目标图 像的宽(高)必须等于原图像的宽(高)除 2 ±1)精确匹配,而IPL处理 交叉区域,如图像的大小或ROI大小可能是完全独立的。 CvArr 不确定数组 typedef void CvArr; CvArr* 仅仅是被用于作函数的参数,用于指示函数接收的数组类型可 以不止一个,如 IplImage*, CvMat* 甚至 CvSeq*. 最终的数组类型是 在运行时通过分析数组头的前 4 个字节判断。 数组操作 CreateImage 创建头并分配数据 IplImage* cvCreateImage( CvSize size, int depth, int channels ); size 图像宽、高.
depth 图像元素的位深度,可以是下面的其中之一: IPL_DEPTH_8U - 无符号 8 位整型 IPL_DEPTH_8S - 有符号 8 位整型 IPL_DEPTH_16U - 无符号 16 位整型 IPL_DEPTH_16S - 有符号 16 位整型 IPL_DEPTH_32S - 有符号 32 位整型 IPL_DEPTH_32F - 单精度浮点数 IPL_DEPTH_64F - 双精度浮点数 channels 每个元素(像素)通道号.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常 的彩色图像数据排列是: b0 g0 r0 b1 g1 r1 ... 虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些 OpenCV 也 能处理他, 但是这个函数只能创建交叉存取图像. 函数 cvCreateImage 创建头并分配数据,这个函数是下列的缩写型式 header = cvCreateImageHeader(size,depth,channels); cvCreateData(header); CreateImageHeader 分配,初始化,并且返回 IplImage 结构 IplImage* cvCreateImageHeader( CvSize size, int depth, int channels ); size 图像宽、高. depth 像深 (见 CreateImage). channels 通道数 (见 CreateImage). 函数 cvCreateImageHeader 分配, 初始化, 并且返回 IplImage结构. 这个函数相似于: iplCreateImageHeader( channels, 0, depth, channels == 1 ? "GRAY" : "RGB", channels == 1 ? "GRAY" : channels == 3 ? "BGR" : channels == 4 ? "BGRA" : "", IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL, 4, size.width, size.height, 0,0,0,0); 然 而IPL CV_TURN_ON_IPL_COMPATIBILITY 宏) 函 数 不 是 作 为 默 认 的 ( 见 ReleaseImageHeader 释放头 void cvReleaseImageHeader( IplImage** image );
分享到:
收藏