在前面的章節中,我們討論了侵蝕和膨脹的過程。除此之外,OpenCV還有更多的形態轉換。類Imgproc方法的morphologyEx()用於對給定圖像執行這些操作。
下面是這個方法的語法−
morphologyEx(src, dst, op, kernel)
此方法接受以下參數&負;
src−類的對象表示源(輸入)圖像。
dst−類的對象表示目標(輸出)圖像。
op−表示形態學操作類型的整數。
核矩陣。
Example
下面的程序演示如何使用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。
Output
在執行程序時,您將得到以下輸出&負;
Image Processed
如果您打開指定的路徑,您可以按以下方式觀察輸出圖像−
More Operations
除了在前面的示例中所演示的形態學操作之外,OpenCV還滿足各種其他類型的形態學。所有這些類型都由Imgproc類的預定義靜態欄位(固定值)表示。
您可以通過將它們各自的預定義值傳遞給morphologyEx()方法的參數op來選擇所需的形態學類型。
// Applying Blur effect on the Image Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
以下是表示形態操作類型及其各自輸出的值。