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

Ví dụ giãn nở ảnh (Image Dilation) OpenCV Java

Giãn nở (dilation) và xói mòn (erosion) là hai phép toán hình thái học cơ bản. Giãn nở thêm pixel vào biên ảnh, số pixel phụ thuộc kích thước phần tử cấu trúc (kernel).

Dùng Imgproc.dilate() với 3 Mat: nguồn, đích, kernel. Kernel tạo bằng Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(2*radius+1, 2*radius+1)).

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.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImageDilation 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());
        Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size((2*2)+1, (2*2)+1));
        Imgproc.dilate(src, dst, kernel);
        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("Dilation Example");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]) { launch(args); }
}

Ảnh gốc

Ví dụ giãn nở ảnh (Image Dilation) OpenCV Java

Ảnh sau giãn nở

Ví dụ giãn nở ảnh (Image Dilation) OpenCV Java