我在Android中运行以下openCV代码:

FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);

在openCV 2.4.1中工作正常
在openCV 3.2中,出现以下异常:
java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.features2d.DescriptorMatcher.create_1(int) (tried Java_org_opencv_features2d_DescriptorMatcher_create_11 and Java_org_opencv_features2d_DescriptorMatcher_create_11__I)
                                                                                     at org.opencv.features2d.DescriptorMatcher.create_1(Native Method)
                                                                                     at org.opencv.features2d.DescriptorMatcher.create(DescriptorMatcher.java:76)

我在2种不同的Android设备上进行了检查。我是在做错什么,还是新的openCV版本中的错误?

最佳答案

您的代码是正确的,我已经在我的OpenCV 3.1项目中进行了尝试,并且可以正常工作。
我不了解OpenCV 3.2,但是应该一样。您是否尝试输入匹配器的相应int值?

DescriptorMatcher matcher = DescriptorMatcher.create(4);

您可以在DescriptorMatcher OpenCV 3.2中找到相应的Int值。看来DescriptorMatcher.BRUTEFORCE_HAMMING被认为是int的悠久历史。

10-07 18:31