我想在android中比较两个图像的百分比,这是我的代码
Mat img1 = Highgui.imread("storage/external_SD/a.png");
Mat img2 = Highgui.imread("storage/external_SD/b.png");
MatOfKeyPoint keypoints1 = new MatOfKeyPoint();
MatOfKeyPoint keypoints2 = new MatOfKeyPoint();
Mat descriptors1 = new Mat();
Mat descriptors2 = new Mat();
//Definition of ORB keypoint detector and descriptor extractors
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
//Detect keypoints
detector.detect(img1, keypoints1);
detector.detect(img2, keypoints2);
//Extract descriptors
extractor.compute(img1, keypoints1, descriptors1);
extractor.compute(img2, keypoints2, descriptors2);
//Definition of descriptor matcher
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
//Match points of two images
MatOfDMatch matches = new MatOfDMatch();
matcher.match(descriptors1,descriptors2 ,matches);
例如我的方法输出应该是:
Images is 90% same
但是我不知道在matcher.match(descriptors1,descriptors2 ,matches);
方法之后我该怎么做,你能告诉我吗?
答案 0 :(得分:-2)
我记得方法match()
必须返回double
或float
的值。
我做了相同的事情与面部比较,我做了(根据你的情况):
double value = matcher.match(descriptors1,descriptors2 ,matches);
围绕此问题有2个类似的问题。看看这个。一定很有用。 OpenCV filtering ORB matches OpenCV - Java - No match with 2 opposite images using DescriptorMatcher