Rumah  >  Artikel  >  Java  >  Bagaimana untuk menambah hingar pada imej menggunakan perpustakaan OpenCV Java?

Bagaimana untuk menambah hingar pada imej menggunakan perpustakaan OpenCV Java?

WBOY
WBOYke hadapan
2023-08-18 14:01:021237semak imbas

Tambah hingar pada imej yang diberikan menggunakan OpenCV -

  • Baca kandungan imej yang diberikan ke dalam objek Mat.

  • Buat dua matriks kosong untuk menyimpan hingar dan keputusan

Buat dua matriks MatOfDouble untuk menyimpan min dan sisihan piawai.

  • Gunakan fungsi minStdDev() untuk mendapatkan nilai min dan sisihan piawai Gunakan kaedah randn() untuk mencipta matriks dengan unsur rawak (digunakan untuk menyimpan hingar).

  • Hantar sumber, min dan sisihan piawai yang dibuat di atas kepada kaedah ini objek.

Akhir sekali, tambahkan matriks hingar dan matriks sumber dan simpan sebagai matriks sasaran.

Contoh

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.MatOfDouble;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
public class AddingNoise 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
      String file ="D://images//elephant.jpg";
      Mat src = Imgcodecs.imread(file);
      System.out.println("Image Loaded");
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Creating a matrix for the noise
      Mat noise = new Mat(src.rows(), src.cols(), src.type());
      //Calculating the mean and standard deviation
      MatOfDouble mean = new MatOfDouble();
      MatOfDouble dev = new MatOfDouble();
      Core.meanStdDev(src, mean, dev);
      //Filling the noise matrix
      Core.randn(noise, mean.get(0,0)[0], dev.get(0,0)[0]);
      //Adding noise to the destination
      Core.add(src, noise, 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("Adding Noise Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Imej input

如何使用Java OpenCV库向图像添加噪声?

Output

Selepas melaksanakan program di atas, output berikut akan dijana

Atas ialah kandungan terperinci Bagaimana untuk menambah hingar pada imej menggunakan perpustakaan OpenCV Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam