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 |
|