> Java > java지도 시간 > 본문

OpenCV Java 라이브러리를 사용하여 두 이미지의 키포인트를 일치시키는 방법은 무엇입니까?

王林
풀어 주다: 2023-09-08 09:21:01
앞으로
702명이 탐색했습니다.

org.opencv.features2d.Feature2D (abstract) 클래스의 Detect() 메서드는 주어진 이미지의 핵심 포인트를 감지합니다. 이 방법의 경우 소스 이미지를 나타내는 Mat 개체와 읽기 키포인트를 보관하기 위한 빈 MatOfKeyPoint 개체를 전달해야 합니다.

org.opencv.features2d.Feature2D 클래스의 Strong>drawMatches() 메서드는 주어진 두 이미지의 키포인트 간 일치하는 항목을 찾아 그립니다. 이 메소드는

Mat
    클래스의 첫 번째 객체 소스 이미지를 나타내는
  • src1 매개변수를 허용합니다.

  • keypoints1 - 첫 번째 소스 이미지의 핵심 포인트를 나타내는 MatOfKeyPoint 클래스의 개체입니다.

  • src2 - 두 번째 소스 이미지를 나타내는 Mat 클래스의 개체입니다.

  • keypoints2 - 두 번째 소스 이미지의 키포인트를 나타내는 MatOfKeyPoint 클래스의 개체입니다.

  • matches1to2 strong> - 첫 번째 이미지에서 두 번째 이미지까지의 일치입니다. 즉, keypoints1[i]에는 keypoints2[matches[i]]에 해당 지점이 있습니다.

  • dst - 대상 이미지를 나타내는 Mat 클래스의 객체입니다.

그래서 두 이미지의 핵심을 일치시키세요 -

  • imread() 메소드를 사용하여 두 소스 이미지를 읽어보세요.

  • 이미지의 핵심 포인트를 가져오고 Detect() 메서드를 사용하여 두 개의 이미지를 그립니다.

  • 일치하는 항목을 찾아 그리려면 drawMatches() 메서드를 사용하세요.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfDMatch;
import org.opencv.core.MatOfKeyPoint;
import org.opencv.features2d.FastFeatureDetector;
import org.opencv.features2d.Features2d;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
public class MatchingKeypoints {
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the source images
      String file1 ="D:\Images\feature1.jpg";
      Mat src1 = Imgcodecs.imread(file1);
      String file2 ="D:\Images\feature2.jpg";
      Mat src2 = Imgcodecs.imread(file2);
      //Creating an empty matrix to store the destination image
      Mat dst = new Mat();
      FastFeatureDetector detector = FastFeatureDetector.create();
      //Detecting the key points in both images
      MatOfKeyPoint keyPoints1 = new MatOfKeyPoint();
      detector.detect(src1, keyPoints1);
      MatOfKeyPoint keyPoints2 = new MatOfKeyPoint();
      detector.detect(src2, keyPoints2);
      MatOfDMatch matof1to2 = new MatOfDMatch();
      Features2d.drawMatches(src1, keyPoints1, src2, keyPoints2, matof1to2, dst);
      HighGui.imshow("Feature Matching", dst);
      HighGui.waitKey();
   }
}
로그인 후 복사

이미지 입력

Image1 -

如何使用OpenCV Java库匹配两个图像的关键点?

Image2 -

如何使用OpenCV Java库匹配两个图像的关键点?

출력

如何使用OpenCV Java库匹配两个图像的关键点?

위 내용은 OpenCV Java 라이브러리를 사용하여 두 이미지의 키포인트를 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!