OpenCV数据类型的类型特征

时间:2014-08-27 06:36:05

标签: c++ templates opencv typetraits

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

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

在这种情况下,我使用基本特征,getCVType<T>::value将返回CV_32F T=float等等。我知道这很愚蠢,因为我本可以使用Mat_<T>(rows,cols)而忘记使用特征为了这。但是它让我想到:在OpenCV中是否有任何可用的特征(或任何模板的东西)在编译时从类型推断出类型宏(CV_32F,CV_8U,...)?

1 个答案:

答案 0 :(得分:3)

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");