SURF和SIFT算法在OpenCV 3.0 Java中不起作用

我在Java中使用的是OpenCV 3.0(最新版本),但是当我使用SURF算法或SIFT算法时,它不起作用并抛出Exception,该异常表示:

OpenCV Error: Bad argument (Specified feature detector type is not

supported.) in cv::javaFeatureDetector::create

我已经用谷歌搜索过,但是对这类问题的回答并不能解决我的问题。如果有人知道这个问题,请告诉我。

提前致谢!

第三行下面的代码引发异常。

        Mat img_object = Imgcodecs.imread("data/img_object.jpg");

Mat img_scene = Imgcodecs.imread("data/img_scene.jpg");

FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);

MatOfKeyPoint keypoints_object = new MatOfKeyPoint();

MatOfKeyPoint keypoints_scene = new MatOfKeyPoint();

detector.detect(img_object, keypoints_object);

detector.detect(img_scene, keypoints_scene);

回答:

如果从源代码编译OpenCV,则可以自己编辑opencv / modules / features2d / misc / java / src / cpp

/ features2d_manual.hpp来修复缺少的绑定。

我通过以下更改对其进行了修复:

(line 6)

#ifdef HAVE_OPENCV_FEATURES2D

#include "opencv2/features2d.hpp"

#include "opencv2/xfeatures2d.hpp"

#include "features2d_converters.hpp"

...(line 121)

case SIFT:

fd = xfeatures2d::SIFT::create();

break;

case SURF:

fd = xfeatures2d::SURF::create();

break;

...(line 353)

case SIFT:

de = xfeatures2d::SIFT::create();

break;

case SURF:

de = xfeatures2d::SURF::create();

break;

唯一的要求是您与源一起构建opencv_contrib可选模块(您可以从https://github.com/Itseez/opencv_contrib下载git项目,并仅在opencv的ccmake设置上设置其本地路径。

哦,请记住,SIFT和SURF是非免费软件^^;

以上是 SURF和SIFT算法在OpenCV 3.0 Java中不起作用 的全部内容, 来源链接: utcz.com/qa/423059.html

回到顶部