我想知道为什么在opencv:中的lucas kanade跟踪器中使用这行
DataType<cv::detail::deriv_type>::depth
有人能给我解释一下吗?
在OpenCV中,Mat
的深度是指包含在Mat
的数据缓冲区中的数据类型。它们由对应于给定数据类型的整数值表示。这些整数通常由适当的宏定义抽象(例如,uchar
数据由宏CV_8U
表示)。
cv::DataType
是一个类型特征类,它提供了一种获得相应整数值的方法,而不必记住哪个宏意味着哪个数据类型。很少有用户代码需要使用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;