OpenCV - Grenzen hinzufügen

In diesem Kapitel erfahren Sie, wie Sie einem Bild Ränder verleihen.

Die copyMakeBorder () -Methode

Mit der Methode können Sie einem Bild verschiedene Rahmen hinzufügen copyMakeBorder() der Klasse namens Core, die zum Paket gehört org.opencv.core. Das Folgende ist die Syntax dieser Methode.

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

Diese Methode akzeptiert die folgenden Parameter:

  • src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).

  • dst - Ein Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).

  • top - Eine Ganzzahlvariable vom Typ Ganzzahl, die die Länge des Rahmens oben im Bild darstellt.

  • bottom - Eine Ganzzahlvariable vom Typ Ganzzahl, die die Länge des Rahmens am unteren Rand des Bildes darstellt.

  • left - Eine Ganzzahlvariable vom Typ Ganzzahl, die die Länge des Rahmens links im Bild darstellt.

  • right - Eine Ganzzahlvariable vom Typ Ganzzahl, die die Länge des Rahmens rechts im Bild darstellt.

  • borderType - Eine Variable vom Typ Integer, die den Typ des zu verwendenden Rahmens darstellt.

Beispiel

Das folgende Programm zeigt anhand eines Beispiels, wie einem bestimmten Bild ein Rahmen hinzugefügt wird.

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");
   }
}

Angenommen, das Folgende ist das Eingabebild thresh_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:

Andere Arten von Grenzen

Neben dem Randtyp BORDER_CONSTANTWie im vorherigen Beispiel gezeigt, bietet OpenCV verschiedene andere Arten von Grenzen. Alle diese Typen werden durch vordefinierte statische Felder (feste Werte) der Core-Klasse dargestellt.

Sie können den Typ der gewünschten Schwellenwertoperation auswählen, indem Sie den entsprechenden vordefinierten Wert an den genannten Parameter übergeben borderType des copyMakeBorder() Methode.

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

Im Folgenden sind die Werte aufgeführt, die verschiedene Arten von Grenzoperationen und ihre jeweiligen Ausgaben darstellen.

Bedienung und Beschreibung Ausgabe
BORDER_CONSTANT
BORDER_ISOLATED
BORDER_DEFAULT
BORDER_REFLECT
BORDER_REFLECT_101
BORDER_REFLECT101
BORDER_REPLICATE
BORDER_WRAP