我想知道为什么在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;

关于opencv - DataType <cv::detail::deriv_type>::depth它的作用是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22992372/

10-12 21:10