Учебники

OpenCV — Добавление границ

Эта глава научит вас, как жаба граничит с изображением.

Метод copyMakeBorder ()

Вы можете добавить различные границы к изображению, используя метод copyMakeBorder () класса с именем Core, который принадлежит пакету org.opencv.core. ниже приводится синтаксис этого метода.

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

Этот метод принимает следующие параметры —

  • src — Объект класса Mat, представляющий исходное (входное) изображение.

  • dst — Объект класса Mat, представляющий целевое (выходное) изображение.

  • top — переменная типа integer типа integer, представляющая длину границы в верхней части изображения.

  • bottom — Переменная integer типа integer, представляющая длину границы в нижней части изображения.

  • left — переменная целого типа type integer, представляющая длину границы слева от изображения.

  • right — переменная целого типа type integer, представляющая длину границы справа от изображения.

  • borderType — переменная типа integer, представляющая тип границы, которая должна использоваться.

src — Объект класса Mat, представляющий исходное (входное) изображение.

dst — Объект класса Mat, представляющий целевое (выходное) изображение.

top — переменная типа integer типа integer, представляющая длину границы в верхней части изображения.

bottom — Переменная integer типа integer, представляющая длину границы в нижней части изображения.

left — переменная целого типа type integer, представляющая длину границы слева от изображения.

right — переменная целого типа type integer, представляющая длину границы справа от изображения.

borderType — переменная типа integer, представляющая тип границы, которая должна использоваться.

пример

Следующая программа — пример, демонстрирующий, как добавить границу к данному изображению.

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

Предположим, что следующим является входное изображение thresh_input.jpg, указанное в вышеуказанной программе.

Вклад Молот

Выход

При выполнении программы вы получите следующий вывод:

Image Processed

Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом —

Добавление вывода границ

Другие типы границ

В дополнение к типу границы, BORDER_CONSTANT, продемонстрированному в предыдущем примере, OpenCV обслуживает различные другие типы границ. Все эти типы представлены предопределенными статическими полями (фиксированными значениями) класса Core.

Вы можете выбрать нужный тип пороговой операции, передав соответствующее предопределенное значение параметру borderType метода copyMakeBorder () .

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

Ниже приведены значения, представляющие различные типы операций с границами и их соответствующие выходные данные.