该问题通常是由于OpenCv库版本与使用的设备不兼容所致。为解决该问题,可以尝试以下方法:
确认使用的OpenCv库版本与设备兼容。
尝试降低OpenCv库版本。
修改调用BOWImgDescripterExtractor.compute的代码以确保正确使用OpenCv库版本。例如:
Mat img1 = ...;
Mat img2 = ...;
// 创建BOWImgDescriptorExtractor对象
BOWImgDescriptorExtractor bowDE = ...;
// 创建OpenCv库版本兼容的FeatureDetector和DescriptorExtractor对象
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
// 将FeatureDetector和DescriptorExtractor对象设置到bowDE对象中
bowDE.setFeatureDetector(detector);
bowDE.setDescriptorExtractor(extractor);
// 计算img1和img2的BOW特征描述符
Mat descriptors1 = new Mat();
Mat descriptors2 = new Mat();
bowDE.compute(img1, new MatOfKeyPoint(), descriptors1);
bowDE.compute(img2, new MatOfKeyPoint(), descriptors2);
// 使用OpenCv库提供的比较函数比较两个Mat对象
double score = Imgproc.compareHist(descriptors1, descriptors2, Imgproc.CV_COMP_CORREL);
通过上述方法,可以在Android上正确使用BOWImgDescripterExtractor.compute并进行OpenCv图像比较。