Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách thực hiện Blur trung bình (Averaging Blur) trong OpenCV Java

Averaging Blur** (làm mờ trung bình) thay thế pixel trung tâm bằng giá trị trung bình của các pixel trong kernel. Dùng Imgproc.blur() hoặc boxFilter().

Phương thức blur(src, dst, ksize, anchor, borderType):

  • ksize: kích thước kernel (Size).
  • anchor: điểm neo (Point), mặc định (-1,-1) là tâm.
  • borderType: loại đường viền (ví dụ Core.BORDER_DEFAULT).

Ví dụ (JavaFX)

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 {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String file = "D:\\Images\\lamma2.jpg";
        Mat src = Imgcodecs.imread(file);
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        Size size = new Size(45, 45);
        Point point = new Point(20, 30);
        Imgproc.blur(src, dst, size, point, Core.BORDER_DEFAULT);
        Image img = HighGui.toBufferedImage(dst);
        WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
        ImageView imageView = new ImageView(writableImage);
        imageView.setX(10); imageView.setY(10);
        imageView.setFitWidth(575); imageView.setPreserveRatio(true);
        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); }
}

Ảnh gốc

Cách thực hiện Blur trung bình (Averaging Blur) trong OpenCV Java

Ảnh sau Averaging Blur (45x45, anchor 20,30)

Cách thực hiện Blur trung bình (Averaging Blur) trong OpenCV Java