OpenCV - Aggiunta di bordi
Questo capitolo ti insegna come rospare i bordi di un'immagine.
Il metodo copyMakeBorder ()
È possibile aggiungere vari bordi a un'immagine utilizzando il metodo copyMakeBorder() della classe denominata Core, che appartiene al pacchetto org.opencv.core. la seguente è la sintassi di questo metodo.
copyMakeBorder(src, dst, top, bottom, left, right, borderType)
Questo metodo accetta i seguenti parametri:
src - Un oggetto della classe Mat che rappresenta l'immagine sorgente (ingresso).
dst - Un oggetto della classe Mat che rappresenta l'immagine di destinazione (output).
top - Una variabile di numero intero il tipo intero che rappresenta la lunghezza del bordo nella parte superiore dell'immagine.
bottom - Una variabile di numero intero il tipo intero che rappresenta la lunghezza del bordo nella parte inferiore dell'immagine.
left - Una variabile di numero intero il tipo intero che rappresenta la lunghezza del bordo a sinistra dell'immagine.
right - Una variabile di numero intero il tipo intero che rappresenta la lunghezza del bordo a destra dell'immagine.
borderType - Una variabile di tipo integer che rappresenta il tipo di bordo da utilizzare.
Esempio
Il seguente programma è un esempio che mostra come aggiungere un bordo a una data immagine.
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");
}
}
Supponiamo che la seguente sia l'immagine in ingresso thresh_input.jpg specificato nel programma di cui sopra.
Produzione
All'esecuzione del programma, otterrai il seguente output:
Image Processed
Se apri il percorso specificato, puoi osservare l'immagine di output come segue:
Altri tipi di bordi
Oltre al tipo di bordo, BORDER_CONSTANTdimostrato nell'esempio precedente, OpenCV soddisfa vari altri tipi di bordi. Tutti questi tipi sono rappresentati da campi statici predefiniti (valori fissi) della classe Core.
È possibile scegliere il tipo di operazione di soglia necessaria, passando il rispettivo valore predefinito al parametro denominato borderType del copyMakeBorder() metodo.
Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
Di seguito sono riportati i valori che rappresentano i vari tipi di operazioni ai confini e le rispettive uscite.
Funzionamento e descrizione | Produzione |
---|---|
BORDER_CONSTANT |
|
BORDER_ISOLATED |
|
BORDER_DEFAULT |
|
BORDER_REFLECT |
|
BORDER_REFLECT_101 |
|
BORDER_REFLECT101 |
|
BORDER_REPLICATE |
|
BORDER_WRAP |
|