OpenCV数据类型的类型特征

type traits for OpenCV data types

本文关键字:特征 类型 数据类型 OpenCV      更新时间:2023-10-16

我有一个模板方法,其中构造了一个Mat对象。此矩阵的类型取决于模板实现:

template <typename T>
void createMatrixAndDoStuff(int rows, int cols){
// ...
Mat A(rows,cols,getCVtype<T>::value);
// ...
}

在这种情况下,我使用了一个基本特征,如果T=float等,getCVType<T>::value将返回CV_32F。我知道这很愚蠢,因为我本可以使用Mat_<T>(rows,cols),而忘记为此使用特征。但这让我思考:OpenCV中是否有任何可用的特性(或任何模板材料)可以在编译时从类型推断类型宏(CV_32F、CV_8U…)

opencv确实具有此任务的类型特征,它被称为cv::DataType,您不需要自己创建一个

static_assert(cv::DataType<float>::type == CV_32F, 
              "cv::DataType<float>::type == CV_32F");
static_assert(cv::DataType<uchar>::type == CV_8U, 
              "cv::DataType<uchar>::type == CV_8U");
static_assert(cv::DataType<cv::Vec3b>::type == CV_8UC3, 
              "cv::DataType<cv::Vec3b>::type == CV_8UC3");