OpenCV 提供了许多数据结构来处理图像和计算机视觉任务。以下是一些常用的 OpenCV 数据结构及其说明:
1. cv::Mat
- 用途:主要用于存储图像数据,但也可以存储任意多维矩阵数据。
- 说明:
cv::Mat
是一个灵活且高效的多维矩阵容器。它可以表示灰度图像、彩色图像、多通道图像以及其他类型的矩阵数据。支持浅复制和引用计数,允许高效的矩阵操作。
2. cv::Point
- 用途:表示二维或三维点。
- 说明:
cv::Point_<T>
:通用模板类,T
可以是任意类型(如int
、float
)。- 常用特化:
cv::Point2i
:表示二维整型点。cv::Point2f
:表示二维浮点型点。cv::Point2d
:表示二维双精度浮点型点。cv::Point3i
:表示三维整型点。cv::Point3f
:表示三维浮点型点。cv::Point3d
:表示三维双精度浮点型点。
3. cv::Size
- 用途:表示二维尺寸(宽度和高度)。
- 说明:
cv::Size_<T>
:通用模板类,T
可以是任意类型(如int
、float
)。- 常用特化:
cv::Size2i
:表示整型尺寸。cv::Size2f
:表示浮点型尺寸。
4. cv::Rect
- 用途:表示二维矩形区域。
- 说明:
cv::Rect_<T>
:通用模板类,T
可以是任意类型(如int
、float
)。- 常用特化:
cv::Rect
或cv::Rect2i
:表示整型矩形。cv::Rect2f
:表示浮点型矩形。
5. cv::Scalar
- 用途:表示多通道值,通常用于颜色表示。
- 说明:
cv::Scalar
是一个包含 1 到 4 个通道的值的容器,默认情况下用于颜色表示(如 BGR、BGRA)。
6. cv::Vec
- 用途:表示固定大小的向量。
- 说明:
cv::Vec<T, cn>
:通用模板类,T
是类型,cn
是通道数。- 常用特化:
cv::Vec2i
、cv::Vec3i
、cv::Vec4i
:表示 2、3、4 维整型向量。cv::Vec2f
、cv::Vec3f
、cv::Vec4f
:表示 2、3、4 维浮点型向量。cv::Vec2d
、cv::Vec3d
、cv::Vec4d
:表示 2、3、4 维双精度浮点型向量。
7. cv::RotatedRect
- 用途:表示旋转矩形。
- 说明:
cv::RotatedRect
包含中心点、尺寸(宽度和高度)以及旋转角度。
8. cv::Range
- 用途:表示连续的范围。
- 说明:
cv::Range
类通常用于矩阵的行或列范围操作。
9. cv::Moments
- 用途:表示图像矩。
- 说明:
cv::Moments
包含图像的空间矩和中心矩,用于计算物体的特征(如质心、方向等)。
10. cv::KeyPoint
- 用途:表示图像中的关键点。
- 说明:
cv::KeyPoint
包含关键点的位置、大小、方向、响应度等信息。
11. cv::DMatch
- 用途:表示两个特征点之间的匹配。
- 说明:
cv::DMatch
包含匹配点的索引和距离。
12. cv::Matx
- 用途:表示小型固定大小的矩阵。
- 说明:
cv::Matx<T, m, n>
:通用模板类,T
是类型,m
和n
是矩阵的行数和列数。
13. cv::Affine3
- 用途:表示三维仿射变换。
- 说明:
cv::Affine3<T>
:通用模板类,T
是类型(如float
、double
)。
14. cv::UMat
- 用途:表示统一内存访问的矩阵。
- 说明:
cv::UMat
是cv::Mat
的增强版,用于加速计算,支持异构计算架构(如 CPU、GPU)。
总结
这些数据结构在 OpenCV 中用于不同的场景和用途,为图像处理、特征提取、几何变换等提供了强大的支持。了解并掌握这些数据结构可以帮助你更有效地使用 OpenCV 进行计算机视觉任务。