我正在尝试学习OpenCV,作为一个固执己见的人,我正在尝试运行以下算法:
cv::Mat cur_features;
cv::goodFeaturesToTrack(current_image, cur_features, 400, 0.01, 0.01);
现在,作为一个固执己见的个体,我很想看看cur_features保存了什么...我期望得到一个400x2的cv::Mat,但实际上我得到的是一个400x1的cv::Mat
没关系,我认为可能是直接索引的问题。然而,我却无法从cur_features.at(0)中提取出一个值并将其打印出来。
我做错了什么?我已经看过goodFeaturesToTrack_Demo.cpp的示例。有一些与我的不同之处需要注意。鉴于该示例,我尝试了以下调用:
std::cout << cur_features.size() << std::endl; // This throws a compile time error even though its in the example
std::cout << cur_features.at<Point2f>(0).x << std::endl; //This throws a run time error.
请问有没有相关的文档能够指导我如何实现我的目标?goodFeaturesToTrack告诉你它返回一个OutputArray,其中包含角点的向量,但是它并没有描述这些角点的类型。如果我使用其他方法得到了这个结果,在文档中我应该查找哪个部分来寻找这个答案?
编辑:此外,Mat :: type()的作用是什么?我找不到可以解释返回值的地方...我在文档中寻找枚举类型时遇到了困难。
std::cout << current_image.type() << std::endl; //This returns 0
std::cout << cur_features.type() << std::endl; //This returns 13
#define CV_8UC1 CV_MAKETYPE(CV_8U,1)
等等。这就是type()返回的内容。 - Pablo