我正在尝试学习 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