OpenCV的基本数据结构

CvPoint:表示图像中的点

CvPoint2D32f:二维空间中的点

CvPoint3D32f:三维空间中的点

这些都是结构体,并不是C++语言中的类,所以他们的构造函数就是简单的内联函数。

  1. typedef struct CvPoint
  2. {
  3. int x;
  4. int y;
  5. }
  6. CvPoint;
  7.  
  8. CV_INLINE CvPoint cvPoint( int x, int y )
  9. {
  10. CvPoint p;
  11.  
  12. p.x = x;
  13. p.y = y;
  14.  
  15. return p;
  16. }

其中的CV_INLINE就是一个宏定义:

  1. define CV_INLINE inline

CvSize:表示图像的尺寸

CvSize2D32f:浮点型数据表示图像的尺寸

  1. typedef struct CvSize
  2. {
  3. int width;
  4. int height;
  5. }
  6. CvSize;
  7.  
  8. CV_INLINE CvSize cvSize( int width, int height )
  9. {
  10. CvSize s;
  11.  
  12. s.width = width;
  13. s.height = height;
  14.  
  15. return s;
  16. }

CvRect表示图像的部分区域

  1. typedef struct CvRect
  2. {
  3. int x;
  4. int y;
  5. int width;
  6. int height;
  7. }
  8. CvRect;
  9.  
  10. CV_INLINE CvRect cvRect( int x, int y, int width, int height )
  11. {
  12. CvRect r;
  13.  
  14. r.x = x;
  15. r.y = y;
  16. r.width = width;
  17. r.height = height;
  18.  
  19. return r;
  20. }

CvScalar包含4个浮点型的成员,可以用来表示B、G、R、alpha。它有三个构造函数,具体的定义:

  1.  

typedef struct CvScalar
{
double val[4];
}
CvScalar;

  1.  

//至少传一个参数,如果后面三个没有,默认为0
CV_INLINE CvScalar cvScalar( double val0, double val1 CV_DEFAULT(0),
double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
{
CvScalar scalar;
scalar.val[0] = val0; scalar.val[1] = val1;
scalar.val[2] = val2; scalar.val[3] = val3;
return scalar;
}

  1.  

//只对第一个参数赋值,后面的为0
CV_INLINE CvScalar cvRealScalar( double val0 )
{
CvScalar scalar;
scalar.val[0] = val0;
scalar.val[1] = scalar.val[2] = scalar.val[3] = 0;
return scalar;
}

  1.  

//把四个参数都赋值为传入的那个参数
CV_INLINE CvScalar cvScalarAll( double val0123 )
{
CvScalar scalar;
scalar.val[0] = val0123;
scalar.val[1] = val0123;
scalar.val[2] = val0123;
scalar.val[3] = val0123;
return scalar;
}

  1.  

CvArr、CvMat和IplImage关系

派生关系为:CvArr-->CvMat-->IplImage,当CvArr用作函数的参数的时候,无论传入的是CvMat还是IplImage,内部都是按CvMat处理。

OpenCV学习(2)--基本数据结构的更多相关文章

  1. opencv学习笔记——Scalar数据结构的理解

    首先看一下Scalar的定义 typedef struct Scalar { ]; }Scalar; 可以看到,Scalar是一个由长度为4的数组作为元素构成的结构体,Scalar最多可以存储四个值, ...

  2. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  3. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  4. OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要

    如今python火啊.每次OpenCV自带的ml模块都让我直呼坑爹,索性准备用python来做OpenCV后期的机器学习算法的处理.于是赶紧拿起这本书读读. 适合OpenCV和python都有一定基础 ...

  5. OpenCV(三) 之 基本数据结构 CvMat和 IplImage

    OpenCV(三) 之 基本数据结构 CvMat和 IplImage CvMat IplImage OpenCv中基本的数据类型 类型 参数 表示 CvPoint int x,y 像素点 CvPoin ...

  6. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  7. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  8. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  9. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

随机推荐

  1. Windows下nc文件传输

    起初用的一下命令: 接收端:nc –n –l –p port –vv > xxx 发送端:nc –n ip port < yyy 但是发现数据传输完成后,不会自动断开连接,要手动的断开,这 ...

  2. vba考勤处理

    sheet1 格式 Sub 统计人数() 'A为号码C姓名 D时间 Dim j As Integer j = 1 For i = 2 To 100000 Step 1 If Range("a ...

  3. javascript模式——Mixin

    Mixin是一种扩展收集功能的方式,能提高代码的复用率. 在javascript中,原型可以继承于其它对象的原型,并且可以为任意数量的实例定义属性.可以利用这一点来促进函数的复用. 下面一段代码就是将 ...

  4. BFC块级排版上下文

    1.BFC 全称是块级排版上下文,用于对块级元素排版,默认情况下只有根元素(body)一个块级上下文,但是如果一个块级元素 设置了float:left,overflow:hidden或position ...

  5. 可以通过Action来判断是什么操作触发了事件

    ObservableCollection<T>当这个集合发生改变后会有相应的事件得到通知请看如下代码: static void Main(string[] args) { var a = ...

  6. 表单提交中get与post的区别

    在Form里面,可以使用post也可以使用get.它们都是method的合法取值. 1. get是从服务器上获取数据,post是向服务器传送数据.   2. get是把参数数据队列加到提交表单的ACT ...

  7. 关于Eclipse的编码配置和字体大小设置

    编码设置 1.工作空间编码:Window-->Preferences-->General-->Workspace 2.工程文件编码:项目-->Properties-->R ...

  8. Ubuntu下Geary安装

    sudo add-apt-repository ppa:yorba/ppasudo apt-get updatesudo apt-get install geary

  9. C语言的本质(5)——类型转换的本质与处理

    数据类型转换的方式 C 语言中的数据类型转换可分为隐式转换和显式转换两种. 隐式转换 隐式转换也可称作为自动转换,它经常以以下几种形式发生: 1.在计算一个同时出现多种数据类型的表达式时,将所有数据类 ...

  10. C语言的本质(4)——浮点数的本质与运算

    C语言的本质(4)--浮点数的本质与运算 C语言规定了3种浮点数,float型.double型和long double型,其中float型占4个字节,double型占8个字节,longdouble型长 ...