由于写入访问冲突,在 openv 中使用 SURF 失败

Using SURF in openv fails because of write access violation

我正在尝试使用 SURF 在另一幅图像中找到一幅图像的位置,但每次我尝试初始化检测器时,它都会失败,告诉我存在访问冲突并且 detector.Ptr “0xFFFFFFFFFFFFFF”。 我的代码:

auto detector = cv::xfeatures2d::SurfFeatureDetector::create();
        detector->detect(map,keypointsMap);
        detector->detectAndCompute(compare, noArray(), keypointsCompare, descriptorComp);

即使我使用 opencv 文档 (https://docs.opencv.org/3.4/d7/dff/tutorial_feature_homography.html) 中的示例代码,也会发生这种情况。我可以毫无问题地使用其他非免费功能,如 SIFT。 我正在使用 opencv4,我包括以下库:

#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include "opencv2/xfeatures2d/nonfree.hpp"
#include "opencv2/imgproc.hpp"

有没有人以前见过这个问题并且可能知道解决方案? 谢谢

我在笔记本电脑上重新安装 opencv 时发现了问题。似乎您必须在构建 opencv 时以正确的方式配置 cmake(为模块指定路径并允许非自由),第一次尝试让 SURF 和 SIFT 工作。如果不这样做,则无法通过覆盖旧文件来修复它。出于某种原因,SIFT 将起作用,但 SURF 不起作用。所以我删除了我 PC 上的所有内容,然后从一开始就进行了配置,现在它可以正常工作了。哦,还要确保将所有内容正确添加到路径中。 在 windows 10 上安装 opencv 的非常有用的描述:https://www.youtube.com/watch?v=x5EWlNQ6z5w 感谢 Grillteller 和所有阅读本文的人!