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

Làm thế nào để triển khai làm mờ (tính trung bình) trong OpenCV bằng Java?

Bạn có thể làm mờ hình ảnh bằng cách lọc hình ảnh bằng bộ lọc thông thấp, điều này sẽ loại bỏ nội dung tần số cao (nhiễu, các cạnh) khỏi hình ảnh.

Tính trung bình là một trong những kỹ thuật làm mờ được cung cấp bởi OpenCV, điều này thay thế phần tử trung tâm bằng giá trị trung bình của tất cả các pixel trong vùng nhân

Bạn có thể lọc / làm mờ hình ảnh bằng kỹ thuật này bằng cách sử dụng làm mờ () hoặc boxFilter () phương thức mờ () phương thức 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 đối tượng Size đại diện cho kích thước của hạt nhân.

  • Một biến số nguyên đại diện cho điểm neo.

  • Một biến số nguyên đại diện cho kiểu đường viền được sử dụng cho đầu ra.

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.Point;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class NormalizedBoxExample extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading image data
      String file ="D:\\Images\\lamma2.jpg";
      Mat src = Imgcodecs.imread(file);
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      // Creating the Size and Point objects
      Size size = new Size(45, 45);
      Point point = new Point(20, 30);
      // Applying Blur effect on the Image
      Imgproc.blur(src, dst, size, point, Core.BORDER_DEFAULT);
      //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("Normalized Blur Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Hình ảnh đầu vào

Làm thế nào để triển khai làm mờ (tính trung bình) trong OpenCV bằng Java?

Đầu ra

Khi thực hiện chương trình trên, tạo ra kết quả sau -

Làm thế nào để triển khai làm mờ (tính trung bình) trong OpenCV bằng Java?