OpenCV - dodawanie granic
W tym rozdziale dowiesz się, jak ropucha obramowuje obraz.
Metoda copyMakeBorder ()
Możesz dodać różne obramowania do obrazu za pomocą tej metody copyMakeBorder() klasy o nazwie Core, która należy do pakietu org.opencv.core. Poniżej znajduje się składnia tej metody.
copyMakeBorder(src, dst, top, bottom, left, right, borderType)
Ta metoda akceptuje następujące parametry -
src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).
dst - Przedmiot z klasy Mat reprezentujący obraz docelowy (wyjściowy).
top - zmienna typu integer, typu integer reprezentująca długość krawędzi u góry obrazu.
bottom - zmienna typu integer, typu integer reprezentująca długość obramowania na dole obrazu.
left - zmienna typu integer, typu integer, reprezentująca długość krawędzi po lewej stronie obrazu.
right - zmienna typu integer, typu integer, reprezentująca długość krawędzi po prawej stronie obrazu.
borderType - zmienna typu integer reprezentująca typ obramowania, który ma być użyty.
Przykład
Poniższy program jest przykładem pokazującym, jak dodać obramowanie do danego obrazu.
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");
}
}
Załóżmy, że poniżej jest obraz wejściowy thresh_input.jpg określone w powyższym programie.
Wynik
Podczas wykonywania programu otrzymasz następujący wynik -
Image Processed
Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -
Inne rodzaje granic
Oprócz typu obramowania BORDER_CONSTANTpokazane w poprzednim przykładzie, OpenCV obsługuje różne inne typy granic. Wszystkie te typy są reprezentowane przez predefiniowane pola statyczne (wartości stałe) klasy Core.
Możesz wybrać typ wymaganej operacji progowej, przekazując odpowiednią wstępnie zdefiniowaną wartość do nazwanego parametru borderType z copyMakeBorder() metoda.
Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
Poniżej przedstawiono wartości reprezentujące różne typy operacji na granicach i ich odpowiednie wyniki.
Działanie i opis | Wynik |
---|---|
BORDER_CONSTANT |
|
BORDER_ISOLATED |
|
BORDER_DEFAULT |
|
BORDER_REFLECT |
|
BORDER_REFLECT_101 |
|
BORDER_REFLECT101 |
|
BORDER_REPLICATE |
|
BORDER_WRAP |
|