Java中OpenCV 3.0 RC1的findHomography函数不起作用



我想在Java中使用OpenCV计算图像的同形性,但它抛出异常:OpenCV Error: Bad argument (The input arrays should be 2D or 3D point sets) in cv::findHomography

我的代码是这样的(因为代码很长,我只是发布了代码的一部分):

    ....
    List<Point> obj = new ArrayList<>();
    List<Point> scene = new ArrayList<>();
    KeyPoint[] _keypoints_object = keypoints_object.toArray();
    KeyPoint[] _keypoints_scene = keypoints_scene.toArray();
    for (int i = 0; i < good_matches.size(); i++) {
        obj.add(_keypoints_object[good_matches.get(i).queryIdx].pt);
        scene.add(_keypoints_scene[good_matches.get(i).trainIdx].pt);
    }
    MatOfPoint2f _obj = new MatOfPoint2f();
    _obj.fromList(obj);
    MatOfPoint2f _scene = new MatOfPoint2f();
    _scene.fromList(scene);
    **Mat H = Calib3d.findHomography(_obj, _scene, Calib3d.RANSAC, 3);**
    ....

在编译过程中没有错误,我已经声明了一个2D Point,它是MatOfPoint2f并且编译器被接受,但是当运行代码时它会抛出异常。原因是什么,是这个OpenCV bug还是代码有问题?

如果有人知道请告诉我如何解决。提前感谢!

if (obj.isEmpty() || scene.isEmpty()) {
        LOGGER.debug("No matches found at all.....");
    }

对象或场景列表将为空。当列表为空时,尽量避免findHomography

最新更新