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

Ví dụ Java chứng minh khả năng phát hiện cạnh bất thường trong OpenCV.

Canny () phương thức của lớp Imgproc áp dụng thuật toán phát hiện cạnh canny 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.

  • Hai biến kép để giữ các giá trị ngưỡng.

Để phát hiện các cạnh của một hình ảnh nhất định bằng cách sử dụng công cụ phát hiện cạnh mờ -

  • Đọc nội dung của hình ảnh nguồn bằng cách sử dụng imread () phương pháp của Imgcodecs lớp học.

  • Chuyển đổi nó thành một hình ảnh tỷ lệ xám bằng cách sử dụng cvtColor () phương pháp của Imgproc lớp học.

  • Làm mờ hình ảnh thu được (màu xám) bằng cách sử dụng Blur () phương pháp của Imgproc lớp có giá trị hạt nhân 3.

  • Áp dụng thuật toán phát hiện cạnh có mép trên hình ảnh bị mờ bằng cách sử dụng canny () phương pháp của Imgproc .

  • Tạo một ma trận trống với tất cả các giá trị bằng 0.

  • Thêm các cạnh được phát hiện vào nó bằng cách sử dụng copyTo () phương pháp của Mat lớp học.

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.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class EdgeDetection extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\\Images\\win2.jpg";
      Mat src = Imgcodecs.imread(file);
      //Creating an empty matrices to store edges, source, destination
      Mat gray = new Mat(src.rows(), src.cols(), src.type());
      Mat edges = new Mat(src.rows(), src.cols(), src.type());
      Mat dst = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
      //Converting the image to Gray
      Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGB2GRAY);
      //Blurring the image
      Imgproc.blur(gray, edges, new Size(3, 3));
      //Detecting the edges
      Imgproc.Canny(edges, edges, 100, 100*3);
      //Copying the detected edges to the destination matrix
      src.copyTo(dst, edges);      
      //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("Gaussian Blur Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Hình ảnh đầu vào

Ví dụ Java chứng minh khả năng phát hiện cạnh bất thường trong OpenCV.

Đầu ra

Khi thực thi, phần trên tạo ra kết quả sau -

Ví dụ Java chứng minh khả năng phát hiện cạnh bất thường trong OpenCV.