Frk*_*rkn 7 opencv compare image
我想检查两个与opencv相似或不同的图像.
如果它们是相同的printf("相同");
如果它们不相同printf("不相同");
opencv中是否有任何方法或方法?
and*_*riy 12
这不是一件容易的事,如果不是这样的话就不可能做到.我建议的是匹配图像的兴趣点.基本上,您可以使用opencv库来识别图像上的兴趣点并执行它们的匹配.如果匹配的百分比足够高,您可以得出结论图像是相同的.在大多数情况下,此百分比取决于您要匹配的图像种类.这意味着您需要调整接受百分比的值.
要执行指纹匹配,您可以使用ORB,FREAK,BRISK,SURF算法.但我建议你使用ORB.你可以在这里阅读更多相关信息.
以下是如何使用OpenCV for Java完成此操作的一些提示:
//Load images to compare
Mat img1 = Highgui.imread(filename1, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
Mat img2 = Highgui.imread(filename1, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
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);
Run Code Online (Sandbox Code Playgroud)
请注意,它是一个非常基本的图像匹配器.如何使它更好你应该根据你想匹配的图像进行调查.另请参阅Good Matches方法,您可以在此处找到.
| 归档时间: |
|
| 查看次数: |
23998 次 |
| 最近记录: |