![]() |
OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
|
OpenCV 原始数据类型的“trait”类。更多...
#include <opencv2/core/traits.hpp>
OpenCV 原始数据类型的模板“trait”类。
原始 OpenCV 数据类型包括 unsigned char、bool、signed char、unsigned short、signed short、int、float、double,或包含上述类型值的元组(元组中的所有值具有相同的类型)。列表中的任何原始类型都可以通过 CV_<位深度>{U|S|F}(<通道数>) 形式的标识符定义,例如:uchar CV_8UC1,3 元素浮点元组 CV_32FC3,依此类推。一个能够存储此类原始数据类型单个实例的通用 OpenCV 结构是Vec。此类类型的多个实例可以存储在 std::vector、Mat、Mat_、SparseMat、SparseMat_,或任何其他能够存储Vec 实例的容器中。
类 DataType 主要用于在不向相应类添加任何字段或方法(实际上无法向原始 C/C++ 数据类型添加任何内容)的情况下描述此类原始数据类型。此技术在 C++ 中称为类 trait。使用的不是DataType 本身,而是其特化版本,例如
此类的主要目的是将编译时类型信息转换为 OpenCV 兼容的数据类型标识符,例如
因此,此类 trait 用于告知 OpenCV 您正在使用哪种数据类型,即使该类型不是 OpenCV 的原生类型。例如,上面的矩阵 B 初始化能够编译,是因为 OpenCV 定义了适当的特化模板类 DataType<complex<_Tp> >。此机制对于泛型算法的实现也很有用(并且 OpenCV 也是这样使用的)。