我想用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错误还是代码有问题?
如果有人知道,请告诉我如何解决。提前感谢!
发布于 2017-03-13 16:13:26
if (obj.isEmpty() || scene.isEmpty()) {
LOGGER.debug("No matches found at all.....");
}
obj或scene的列表将为空。当列表为空时,尽量避免使用findHomography。
https://stackoverflow.com/questions/30615342
复制相似问题