OpenCV 4.10.0
开源计算机视觉
|
OpenCV 原生数据类型的模板“特性”类。 更多...
#include <opencv2/core/traits.hpp>
OpenCV 原生数据类型的模板“特性”类。
OpenCV 原生数据类型是无符号字符、布尔值、有符号字符、无符号短整型、有符号短整型、整型、浮点型、双精度浮点型之一,或者这些类型中的一种类型的元组,其中元组中的所有值都具有相同的类型。列表中的任何基本类型都可以由形式为 CV_<bit-depth>{U|S|F}C(<number_of_channels>) 的标识符定义,例如:uchar CV_8UC1、3 元素浮点型元组 CV_32FC3 等。能够存储此类原生数据类型单个实例的通用 OpenCV 结构是 Vec。此类类型的多个实例可以存储在 std::vector、Mat、Mat_、SparseMat、SparseMat_ 或任何其他能够存储 Vec 实例的容器中。
The DataType 类基本上用于提供此类原生数据类型的描述,而无需向相应的类添加任何字段或方法(实际上,不可能向原生 C/C++ 数据类型添加任何内容)。这种技术在 C++ 中被称为类特性。它不是 DataType 本身,而是它的专用版本,例如
此类的主要目的是将编译时类型信息转换为 OpenCV 兼容的数据类型标识符,例如
因此,此类特性用于告诉 OpenCV 您正在使用哪种数据类型,即使这种类型不是 OpenCV 本地类型。例如,上面的矩阵 B 初始化能够编译是因为 OpenCV 定义了适当的专用模板类 DataType<complex<_Tp> >。这种机制对于通用算法实现也是有用的(并且 OpenCV 以这种方式使用它)。