我想知道为什么这行用于opencv中的lucas kanade跟踪器:
DataType<cv::detail::deriv_type>::depth
有人可以向我解释一下吗?
答案 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;