OpenCV - Opérations morphologiques
Dans les chapitres précédents, nous avons discuté du processus de erosion et dilation. En plus de ces deux, OpenCV a plus de transformations morphologiques. lemorphologyEx() de la méthode de la classe Imgproc est utilisé pour effectuer ces opérations sur une image donnée.
Voici la syntaxe de cette méthode -
morphologyEx(src, dst, op, kernel)
Cette méthode accepte les paramètres suivants -
src - Un objet de la classe Mat représentant l'image source (entrée).
dst - objet de la classe Mat représentant l'image de destination (sortie).
op - Un entier représentant le type de l'opération morphologique.
kernel - Une matrice de noyau.
Exemple
Le programme suivant montre comment appliquer l'opération morphologique "top-hat" sur une image utilisant la bibliothèque OpenCV.
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");
}
}
Supposons que ce qui suit est l'image d'entrée morph_input.jpg spécifié dans le programme ci-dessus.
![](https://assets.edu.lat/opencv/images/morph_input.jpg)
Production
Lors de l'exécution du programme, vous obtiendrez la sortie suivante -
Image Processed
Si vous ouvrez le chemin spécifié, vous pouvez observer l'image de sortie comme suit -
![](https://assets.edu.lat/opencv/images/morph_output.jpg)
Plus d'opérations
En plus de l'opération morphologique TOPHAT, démontré dans le précédent example, OpenCV répond à divers autres types de morphologies. Tous ces types sont représentés par des champs statiques prédéfinis (valeurs fixes) deImgproc classe.
Vous pouvez choisir le type de morphologie dont vous avez besoin en passant leur valeur prédéfinie respective au paramètre op du morphologyEx() méthode.
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
Voici les valeurs représentant le type d'opérations morphologiques et leurs résultats respectifs.
Fonctionnement et description | Production |
---|---|
MORPH_BLACKHAT | ![]() |
MORPH_CLOSE | ![]() |
MORPH_CROSS | ![]() |
MORPH_DILATE | ![]() |
MORPH_ELLIPSE | ![]() |
MORPH_ERODE | ![]() |
MORPH_GRADIENT | ![]() |
MORPH_OPEN | ![]() |
MORPH_RECT | ![]() |
MORPH_TOPHAT | ![]() |