OpenCV - Ajout de bordures

Ce chapitre vous apprend à créer des bordures de crapaud sur une image.

La méthode copyMakeBorder ()

Vous pouvez ajouter diverses bordures à une image en utilisant la méthode copyMakeBorder() de la classe nommée Core, qui appartient au package org.opencv.core. Voici la syntaxe de cette méthode.

copyMakeBorder(src, dst, top, bottom, left, right, borderType)

Cette méthode accepte les paramètres suivants -

  • src - Un objet de la classe Mat représentant l'image source (entrée).

  • dst - Un objet de la classe Mat représentant l'image de destination (sortie).

  • top - Une variable d'entier de type entier représentant la longueur de la bordure en haut de l'image.

  • bottom - Une variable d'entier de type entier représentant la longueur de la bordure en bas de l'image.

  • left - Une variable d'entier de type entier représentant la longueur de la bordure à gauche de l'image.

  • right - Une variable d'entier de type entier représentant la longueur de la bordure à droite de l'image.

  • borderType - Une variable de type entier représentant le type de bordure à utiliser.

Exemple

Le programme suivant est un exemple montrant comment ajouter une bordure à une image donnée.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

public class AddingBorder {
   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/chap15/input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();
   
      Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
      Imgcodecs.imwrite("E:/OpenCV/chap15/border_constant.jpg", dst);

      System.out.println("Image Processed");
   }
}

Supposons que ce qui suit est l'image d'entrée thresh_input.jpg spécifié dans le programme ci-dessus.

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 -

Autres types de frontières

En plus du type de bordure, BORDER_CONSTANTdémontré dans l'exemple précédent, OpenCV répond à divers autres types de bordures. Tous ces types sont représentés par des champs statiques prédéfinis (valeurs fixes) de la classe Core.

Vous pouvez choisir le type d'opération de seuil dont vous avez besoin, en passant sa valeur prédéfinie respective au paramètre nommé borderType du copyMakeBorder() méthode.

Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);

Voici les valeurs représentant divers types d'opérations aux frontières et leurs résultats respectifs.

Fonctionnement et description Production
BORDER_CONSTANT
BORDER_ISOLATED
BORDER_DEFAULT
BORDER_REFLECT
BORDER_REFLECT_101
BORDER_REFLECT101
BORDER_REPLICATE
BORDER_WRAP