Untitled
public
May 14, 2024
Never
47
1 Mat image1 = new Mat(); 2 image1 = CvInvoke.Imread("./Img/image2.jpg", Emgu.CV.CvEnum.ImreadModes.Color); 3 Mat image2 = CvInvoke.Imread("./Img/image6.jpg", Emgu.CV.CvEnum.ImreadModes.Color); 4 Mat gray1 = new Mat(); 5 Mat gray2 = new Mat(); 6 CvInvoke.CvtColor(image1, gray1, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray); 7 CvInvoke.CvtColor(image2, gray2, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray); 8 9 VectorOfKeyPoint keypoints1 = new VectorOfKeyPoint(); 10 VectorOfKeyPoint keypoints2 = new VectorOfKeyPoint(); 11 12 Mat mask; 13 int k = 2; 14 double uiquenessthreshold = 0.80; 15 VectorOfVectorOfDMatch matches = new VectorOfVectorOfDMatch(); 16 17 ORB detector = new ORB(); 18 Mat descriptors1 = new Mat(); 19 Mat descriptors2 = new Mat(); 20 detector.DetectAndCompute(gray1, null, keypoints1, descriptors1, false); 21 detector.DetectAndCompute(gray2, null, keypoints2, descriptors2, false); 22 23 24 25 BFMatcher bFMatcher = new BFMatcher(DistanceType.Hamming); 26 27 bFMatcher.Add(descriptors1); 28 29 bFMatcher.KnnMatch(descriptors2, matches, k); 30 31 32 mask = new Mat(matches.Size, 1, Emgu.CV.CvEnum.DepthType.Cv8U, 1); 33 34 35 mask.SetTo(new MCvScalar(255)); 36 37 Features2DToolbox.VoteForUniqueness(matches, uiquenessthreshold, mask); 38 39 40 41 42 Console.WriteLine(mask); 43 int similarityScore = CvInvoke.CountNonZero(mask); 44 45 46 Console.WriteLine("Similarity score: " + similarityScore); 47 48 int threshold = 50; 49 50 // Compare similarity score with threshold 51 if (similarityScore > threshold) 52 { 53 Console.WriteLine("Images match!"); 54 } 55 else 56 { 57 Console.WriteLine("Images do not match."); 58 }