我有一个模板方法,其中构造了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,...)?
答案 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");