OpenCV - Morphologische Operationen
In den früheren Kapiteln haben wir den Prozess von diskutiert erosion und dilation. Zusätzlich zu diesen beiden weist OpenCV mehr morphologische Transformationen auf. DasmorphologyEx() der Methode der Klasse Imgproc wird verwendet, um diese Operationen an einem bestimmten Bild auszuführen.
Es folgt die Syntax dieser Methode:
morphologyEx(src, dst, op, kernel)
Diese Methode akzeptiert die folgenden Parameter:
src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).
dst - Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).
op - Eine Ganzzahl, die den Typ der morphologischen Operation darstellt.
kernel - Eine Kernelmatrix.
Beispiel
Das folgende Programm zeigt, wie die morphologische Operation angewendet wird "top-hat" auf einem Bild mit OpenCV-Bibliothek.
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MorphologyExTest {
public static void main(String args[]) {
// Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// Reading the Image from the file and storing it in to a Matrix object
String file ="E:/OpenCV/chap12/morph_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Creating kernel matrix
Mat kernel = Mat.ones(5,5, CvType.CV_32F);
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap12/morph_tophat.jpg", dst);
System.out.println("Image Processed");
}
}
Angenommen, das Folgende ist das Eingabebild morph_input.jpg im obigen Programm angegeben.
Ausgabe
Beim Ausführen des Programms erhalten Sie folgende Ausgabe:
Image Processed
Wenn Sie den angegebenen Pfad öffnen, können Sie das Ausgabebild wie folgt beobachten:
Weitere Operationen
Neben der morphologischen Operation TOPHAT, in der vorherigen demonstriert exampleOpenCV bietet verschiedene andere Arten von Morphologien. Alle diese Typen werden durch vordefinierte statische Felder (feste Werte) von dargestelltImgproc Klasse.
Sie können den Typ der gewünschten Morphologie auswählen, indem Sie den entsprechenden vordefinierten Wert an den Parameter übergeben op des morphologyEx() Methode.
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
Es folgen die Werte, die die Art der morphologischen Operationen und ihre jeweiligen Ausgaben darstellen.
Bedienung und Beschreibung | Ausgabe |
---|---|
MORPH_BLACKHAT |
|
MORPH_CLOSE |
|
MORPH_CROSS |
|
MORPH_DILATE |
|
MORPH_ELLIPSE |
|
MORPH_ERODE |
|
MORPH_GRADIENT |
|
MORPH_OPEN |
|
MORPH_RECT |
|
MORPH_TOPHAT |
|