Android:OpenCv比较两个图像问题

时间:2015-04-01 07:04:14

标签: java android opencv

我想在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);方法之后我该怎么做,你能告诉我吗?

1 个答案:

答案 0 :(得分:-2)

我记得方法match()必须返回doublefloat的值。 我做了相同的事情与面部比较,我做了(根据你的情况):

double value = matcher.match(descriptors1,descriptors2 ,matches);

围绕此问题有2个类似的问题。看看这个。一定很有用。 OpenCV filtering ORB matches OpenCV - Java - No match with 2 opposite images using DescriptorMatcher