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