Openc的基础数据类型(学习第二天)

Posted goudan蒻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openc的基础数据类型(学习第二天)相关的知识,希望对你有一定的参考价值。

OpenCV中的基础数据类型中有三大类别

  1. 第一大类别是从C++中继承而来的基础数据类型(如int float等)包括数组,矩阵,可以来表示基础的几何概念如点,大小,矩形
  2. 第二大类别是辅助对象,这类对象代表更抽象的概念,比如垃圾收集指针类,,数据切片的对象
  3. 第三大类别是大型的数组类型,这类原本是涵盖数组或者一些原语、程序集或者更常见的数据类型,比如存储图片的cv::Mat
  4. opencv 还会非常经常的使用stl的内容
简单介绍
  • cv::Vec<> 类,代表固定向量 cv::Matx<>固定矩阵类 ,这两个是维度要已知与上面相似的是cv::Point 类 这个不是固定向量类继承下来的,是由自己的模板派生的,他们的成员是通过名称变量转换得到
    Point类可以通过别名来使用正确的末班 如 cv::Point2i cv::Point2f 等等,
  • cv::Scalar类本质上是个四维Point类,与Point类相似,但实际上与一个可以产生任意四元素向量的模板有关,
    一般是双精度四元素向量的别名,cv::Scalar 是通过整数下标来访问的。这跟cv::Vec<>相同
    这是因为cv::Scalar 直接继承的cv::Vec<>的实例
  • cv::Rect和cv::Size 和Point类相似,继承自己的模板, Rect包含了Size里面的Height和width
    其中两个整数类型就是自己的名称,浮点数是 Size2f, Rect 有个类是RotateRect 包含了一个cv::Point2f 的中心点,一个Size2f 的size 和一个额外的浮点类型的角度
cv::Point 类
  • 最简单的类型,可以成为任何类型的点,如整形和浮点型等
  • 大多数的程序中 Point类 通过类似cv::Point2i cv::Point3f 等实例化的,数字代表维度,后面的字母代表构造此实例的原语
  • 这里有几个重要的受支持的操作,但是他们是通过隐式转换到固定向量类而受支持
  • 包含所有向量和标量,封装了线性代数的操作符
操作实例
默认构造函数cv::Piont2i p; cv::point3i p;
拷贝函数cv::Point3f p2(p1);
构造函数cv::Piont2i p(x,y); cv::point3i p(x,y,z);
构造成固定向量类(cv::Vec3f) p;
成员访问p.x; p.y
点乘float x = p1.dot(p2); double x = p1.dot(p2)
叉乘p2 = cross(p2)
判断点是否在行r内p.inside®
cv::Scalar 类
  • 四维点类
  • 有一些与四元向量类相关的特殊成员函数
操作实例
默认构造函数cv::Scalar s;
拷贝函数cv::Scalar s2(s1);
构造函数cv::Scalar s(x1); cv::Scalar s(x1,x2,x3,x4);
元素相乘s1.mul(s2)
(四元数) 共轭s.conj();
(四元数)真值测试s.isReal();

该类继承自想两类他继承了所有的向量操作

Size 类

Size 可以和Piont类互换

操作实例
默认构造函数cv::Size sz; cv::Size2i sz; cv::Size sz;
拷贝函数cv::Size s2(s1);
构造函数cv::Size sz(w,h)
成员访问sz,.width;sz.height;
计算面积sz.area;
Rect 类
操作实例
默认构造函数cv::Rect r;
拷贝函数cv::Rect r2(r1)
构造函数cv::Rect r(x,y,w,h) cv::Rect(p, sz); cv:: Rect(p1,p2);
成员访问r.x r.y r.width r.height
计算面积r.area;
提取左上角r.tl();
右下角r.br();
p在矩形内c.contains§;
  • 运算符重载
操作实例
交集cv::Rect r3 = r1&r2; r2 &= r1;
同时包含r1,r2的矩形cv::Rect r3 = r1
平移矩形rx个数量cv::Rect rx = r+x ; r += rx;(Point)
扩大矩形rs大小cv::Rect rx = r+s; r+=s(size)
判断相等不相等== !=

Matx 固定矩阵

为了编译已知维度的矩阵打造的,都是在堆栈上分配内存,分配和清除飞快,在小型的矩阵上面做过特别的优化,运行很快
固定向量类继承自固定矩阵,其他类继承自固定向量,可见此类的重要性
通常有别名格式 Matxx{1,2…6}{f,d} 1-6 的任何数
通常是早就已经知道矩阵大小用这个类
所以大型的图像矩阵或者其他灵活大小点阵,需要更大的类,那么就得使用cv::Mat

操作很多可以参考opencv官方文档,这里不列举了(累了)

固定向量类

也不介绍了,看文档吧

以上是关于Openc的基础数据类型(学习第二天)的主要内容,如果未能解决你的问题,请参考以下文章

七天学会Python基础-第二天1/1

学习Python第二天 ---数据类型

Java学习第二天 第2节(数据类型转换)

Python入门基础(第二天):基本数据类型

c/c++零基础坐牢第二天

Java基础第二天总结——变量与进制