Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

Draw Rectangle around objects which not matching

$
0
0
I am using below code snippet to compare two images.After compare, I want to draw rectangle around the object which are not matching. int retVal = 0; int notMactingCount = 0; long startTime = System.currentTimeMillis(); // Load images to compare Mat img1 = Imgcodecs.imread(filename1, Imgcodecs.CV_LOAD_IMAGE_COLOR); Mat img2 = Imgcodecs.imread(filename2, Imgcodecs.CV_LOAD_IMAGE_COLOR); System.out.println(img1); // Declare key point of images MatOfKeyPoint keypoints1 = new MatOfKeyPoint(); MatOfKeyPoint keypoints2 = new MatOfKeyPoint(); Mat descriptors1 = new Mat(); Mat descriptors2 = new Mat(); // Definition of ORB key point detector and descriptor extractors FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.ORB); // Detect key points 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(); System.out.println("Type of Image1= " + descriptors1.type() + ", Type of Image2= " + descriptors2.type()); System.out.println("Cols of Image1= " + descriptors1.cols() + ", Cols of Image2= " + descriptors2.cols()); System.out.println("keypoints1 of Image1= " + keypoints1.cols() + ", keypoints2 of Image2= " + keypoints2.cols()); // Visualize the matches and save the visualization. if (descriptors2.cols() == descriptors1.cols()) { matcher.match(descriptors1, descriptors2 ,matches); // Check matches of key points DMatch[] match = matches.toArray(); double max_dist = 0; double min_dist = 100; for (int i = 0; i < descriptors1.rows(); i++) { double dist = match[i].distance; if( dist < min_dist ) min_dist = dist; if( dist > max_dist ) max_dist = dist; } System.out.println("max_dist=" + max_dist + ", min_dist=" + min_dist); // Extract good images (distances are under 10) for (int i = 0; i < descriptors1.rows(); i++) { if (match[i].distance <= 10) { retVal++; }else{ notMactingCount++; } } System.out.println("matching count=" + retVal+" notMactingCount="+notMactingCount); } Please share code snippet to draw rectangle around the object which are not matching or any link reference

Viewing all articles
Browse latest Browse all 19555

Trending Articles