【OpenCV学习】OpenCV中的数据类型

OpenCV中的数据类型

OpenCV有很多数据类型,它们都基于一些重要视觉概念的抽象而设计,来提供相对简单,直观的表示和处理。

从组织结构的角度而言,OpenCV的基础数据类型主要分为三类

第一类,直接从C++原语中继承的基础数据类型(如int和float),这些类型包括简单的数组和矩阵。

第二类,辅助对象,这些对象代表更抽象的概念,比如垃圾收集指针,用于数据切片的范围对象(range objects)

第三类,大型数组类型,典型的代表是cv::Mat类,该类用来代表任意维度的包含任意基础元素的数组。

除了这些,OpenCV还有很多标准模板库(STL)。

基础类型介绍

每一个基础类型实际上都是一个相对复杂的类,支持它自己的接口函数、重载以及类似的操作

1.Point类

这个类是OpenCV的基础类型,Point可能是最简单的,它是一个点模板类。

它们可以成为任何类型的点,如整型和浮点型,还分为二维点模板类Point_和三维点模板类Point3_,源代码中定义为:

  typedef Point_<int> Point2i;
  typedef Point2i Point;
  typedef Point_<float> Point2f;
  typedef Point_<double> Point2d;
  typedef Point3_<int> Point3i;
  typedef Point3_<float> Point3f;
  typedef Point3_<double> Point3d;

所以在大多数程序中,Point类是通过类似于cv::Point2i和cv:Point3f这类别名来实例化的,别名的最后一个字母表示构造该点需要的原语:

  • b是一个无符号字符
  • s是一个短整型
  • i是一个32位整型
  • f是一个32位浮点数
  • d是一个64位浮点数

Point类原生支持的函数列表:

操作 示例
默认构造函数

cv::Point2i p;

cv::Point3i p;

复制构造函数 cv::Point3f p2(p1);
值构造函数

cv::Point2i(x0, x1);

cv::Point3d p(x0,x1,x2);

构造成固定向量类 (cv::Vec3f) p;
成员访问 p.x, p.y;
点乘 float x = p1.dot(p2);
双精度点乘 double y = p1.dot(p2);
叉乘 p1.cross(p2);
判断一个点p是否在举行r内 p.inside(r);

 举个例子:

 Point point;//创建一个2D点对象
  point.x = 10;//初始化x坐标值
  point.y = 8;//初始化y坐标值
  或者
  Point point = Point(10, 8);

2.Scalar类

cv::Scalar类是四维点类。在这个模板中,所有的成员都是双精度浮点数。定义如下:

template<typen
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值