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

Giải thích Chuyển đổi khoảng cách OpenCV bằng ví dụ java


Nói chung, phép biến đổi khoảng cách là một biểu diễn bắt nguồn của một hình ảnh kỹ thuật số. Trong thao tác này, cường độ mức xám của các điểm bên trong vùng tiền cảnh được thay đổi để tạo khoảng cách tương ứng của chúng với giá trị 0 gần nhất (ranh giới).

Khoảng cáchTransform () phương thức của lớp Imgproc áp dụng Biến đổi khoảng cách trên hình ảnh đã cho, phương thức này chấp nhận -

  • Hai đối tượng Mat đại diện cho hình ảnh nguồn và hình ảnh đích.

  • Một biến số nguyên đại diện cho kiểu chuyển đổi khoảng cách sẽ được áp dụng.

  • Một giá trị số nguyên đại diện cho kích thước mặt nạ sẽ được sử dụng.

Ví dụ

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DistanceTransform extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the Image from the file and storing it in to a Matrix object
      String file ="D://images//boy.jpg";
      Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
      //Creating an empty matrix to store the results
      Mat dst = new Mat();
      Mat binary = new Mat();
      //Converting the gray scale image to binary image
      Imgproc.threshold(src, binary, 100, 255, Imgproc.THRESH_BINARY);
      //Applying distance transform
      Imgproc.distanceTransform(binary, dst, Imgproc.DIST_C, 3);
      Core.convertScaleAbs( dst, dst );
      //Converting matrix to JavaFX writable image
      Image img = HighGui.toBufferedImage(dst);
      WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null);
      //Setting the image view
      ImageView imageView = new ImageView(writableImage);
      imageView.setX(10);
      imageView.setY(10);
      imageView.setFitWidth(575);
      imageView.setPreserveRatio(true);
      //Setting the Scene object
      Group root = new Group(imageView);
      Scene scene = new Scene(root, 595, 400);
      stage.setTitle("Distance Transform");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Hình ảnh đầu vào

Giải thích Chuyển đổi khoảng cách OpenCV bằng ví dụ java

Đầu ra

Khi thực thi, chương trình trên tạo các cửa sổ sau -

Giải thích Chuyển đổi khoảng cách OpenCV bằng ví dụ java