DataType <cv :: detail :: deriv_type> :: depth它用于什么</cv :: detail :: deriv_type>

时间:2014-04-10 15:27:35

标签: opencv

我想知道为什么这行用于opencv中的lucas kanade跟踪器:

DataType<cv::detail::deriv_type>::depth

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

在OpenCV中,Mat的深度指的是Mat数据缓冲区中包含的数据类型。它们由对应于给定数据类型的整数值表示。这些整数通常由适当的宏定义抽象(例如,uchar数据由宏CV_8U表示。

cv::DataType是一个type-traits类,它提供了一种获取相应整数值的方法,而无需记住哪个宏意味着哪种数据类型。用户代码需要使用DataType::depth的情况非常少。更为常见的是DataType::type

一个简单的例子显示了DataType::depth的一种可能用途:

cv::Mat uchar_data = cv::Mat::ones(3, 3, CV_8UC1);
cv::Mat float_data;
uchar_data.convertTo(float_data, cv::DataType<float>::depth);
                              // ^^ This could equivalently be replaced
                              //    by CV_32F macro
float_data.at<float>(0,1) += 0.5f;
std::cout << float_data << std::endl;