OpenCV - морфологические операции
В предыдущих главах мы обсуждали процесс erosion и dilation. Помимо этих двух, OpenCV имеет больше морфологических преобразований. ВmorphologyEx() метода класса Imgproc используется для выполнения этих операций с данным изображением.
Ниже приводится синтаксис этого метода -
morphologyEx(src, dst, op, kernel)
Этот метод принимает следующие параметры -
src - Объект класса Mat представляющий исходное (входное) изображение.
dst - объект класса Mat представляющий конечное (выходное) изображение.
op - Целое число, представляющее тип морфологической операции.
kernel - матрица ядра.
пример
Следующая программа демонстрирует, как применять морфологическую операцию. "top-hat" на изображении с использованием библиотеки OpenCV.
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MorphologyExTest {
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/chap12/morph_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Creating kernel matrix
Mat kernel = Mat.ones(5,5, CvType.CV_32F);
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap12/morph_tophat.jpg", dst);
System.out.println("Image Processed");
}
}
Предположим, что ниже находится входное изображение morph_input.jpg указанные в вышеуказанной программе.
Вывод
При выполнении программы вы получите следующий вывод -
Image Processed
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом:
Больше операций
Помимо морфологической операции TOPHAT, продемонстрированный в предыдущем example, OpenCV обслуживает различные другие типы морфологии. Все эти типы представлены предопределенными статическими полями (фиксированными значениями)Imgproc класс.
Вы можете выбрать нужный тип морфологии, передав соответствующее предопределенное значение параметру. op из morphologyEx() метод.
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
Ниже приведены значения, представляющие тип морфологических операций и их соответствующие результаты.
Работа и описание | Вывод |
---|---|
MORPH_BLACKHAT |
|
MORPH_CLOSE |
|
MORPH_CROSS |
|
MORPH_DILATE |
|
MORPH_ELLIPSE |
|
MORPH_ERODE |
|
MORPH_GRADIENT |
|
MORPH_OPEN |
|
MORPH_RECT |
|
MORPH_TOPHAT |
|