Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để phát hiện các điểm chính của một hình ảnh bằng cách sử dụng thư viện OpenCV Java?


Phát hiện () phương thức của org.opencv.features2d.Feature2D (trừu tượng) lớp phát hiện các điểm chính của hình ảnh đã cho. Đối với phương pháp này, bạn cần phải vượt qua Mat đối tượng đại diện cho hình ảnh nguồn và một MatOfKeyPoint trống đối tượng để giữ các điểm chính đã đọc.

Bạn có thể vẽ các điểm chính trên hình ảnh bằng cách sử dụng drawKeypoints () phương thức của org.opencv.features2d.Features2d lớp học.

Lưu ý

  • Vì Feature2D là một lớp trừu tượng nên bạn cần khởi tạo một trong các lớp con của nó để gọi phương thức detector (). Ở đây chúng tôi đã sử dụng lớp FastFeatureDetector.

  • Tính năng2D Features2d là hai lớp khác nhau của gói features2d đừng nhầm lẫn ...

Ví dụ

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfKeyPoint;
import org.opencv.core.Scalar;
import org.opencv.features2d.FastFeatureDetector;
import org.opencv.features2d.Features2d;
import org.opencv.highgui.HighGui;z
import org.opencv.imgcodecs.Imgcodecs;
public class DetectingKeyPoints{
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the contents of the image
      String file ="D:\\Images\\javafx_graphical.jpg";
      Mat src = Imgcodecs.imread(file);
      //Reading the key points of the image
      Mat dst = new Mat();
      MatOfKeyPoint matOfKeyPoints = new MatOfKeyPoint();
      FastFeatureDetector featureDetector = FastFeatureDetector.create();
      featureDetector.detect(src, matOfKeyPoints);
      //Drawing the detected key points
      Features2d.drawKeypoints(src, matOfKeyPoints, dst, new Scalar(0, 0, 255));
      HighGui.imshow("Feature Detection", dst);
      HighGui.waitKey();
   }
}

Hình ảnh đầu vào

Làm thế nào để phát hiện các điểm chính của một hình ảnh bằng cách sử dụng thư viện OpenCV Java?

Đầu ra

Làm thế nào để phát hiện các điểm chính của một hình ảnh bằng cách sử dụng thư viện OpenCV Java?