×
OpenCV教程OpenCV简介OpenCV开发环境配置OpenCV存储图像OpenCV读取图像OpenCV写入图像OpenCV用户界面

图像类型

OpenCV MREAD_XXX标记OpenCV将图像读取为灰度OpenCV读取图像为BGR

图像转换

OpenCV彩色图像转为灰度OpenCV彩色图像转为二进制OpenCV灰度转为二进制

绘图函数

OpenCV绘制圆形OpenCV绘制线条OpenCV绘制四方形OpenCV绘制椭圆形OpenCV绘制折线OpenCV绘制凸折线OpenCV绘制箭头线OpenCV添加文本

模糊功能

OpenCV模糊(平滑)OpenCV高斯模糊OpenCV中位模糊

过滤功能

OpenCV双边滤镜OpenCV箱式滤镜OpenCV SQRBox滤镜OpenCV Filter2DOpenCV扩张OpenCV侵蚀OpenCV形态学操作OpenCV图像金字塔

阈值

OpenCV简单阈值OpenCV自适应阈值

索贝尔衍生品

OpenCV添加边框OpenCV索贝尔操作OpenCV Scharr操作

变换操作

OpenCV拉普拉斯变换OpenCV距离转换

相机和人脸检测

OpenCV使用摄像头OpenCV图片人脸检测OpenCV摄像头人脸检测

几何变换

OpenCV仿射转换OpenCV旋转OpenCV缩放OpenCV彩色映射图

杂篇

OpenCV Canny边缘检测OpenCV霍夫线变换OpenCV直方图均衡

OpenCV扩张


侵蚀和扩张是两种形态操作。 顾名思义,形态操作是根据形状对图像进行处理的一组操作。

基于给定的输入图像,开发了“结构元素”。这可以在两个程序中的任何一个中完成。 这些目的是消除噪音,解决不完善之处,使图像清晰。

扩张

这个过程遵循与特定形状(如正方形或圆形)的某些内核的卷积。这个内核有一个锚点,表示它的中心。

这个内核重叠在图片上来计算最大像素值。 经过计算,图片被替换为中心的锚点。 通过这个程序,明亮区域的面积变大,因此图像尺寸增加。

例如,白色或明亮的物体的大小增加,而黑色或暗色的物体的大小减小。

可以使用imgproc类的dilate()方法对图像执行扩张操作。以下是此方法的语法。

dilate(src, dst, kernel)

该方法接受以下参数 -

  • src - 表示此操作的源(输入图像)的Mat对象。
  • dst - 表示此操作的目标(输出图像)的Mat对象。
  • kernel - 表示卷积核的Mat对象。

示例

可以使用getStructureElement()方法来准备内核矩阵。该方法接受一个表示morph_rect类型的整数和一个Size类型的对象。

Imgproc.getStructuringElement(int shape, Size ksize);

以下程序演示如何对给定图像执行扩张操作。

package com.yiibai.filtering;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class DilateTest {
   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 ="F:/worksp/opencv/images/sample2.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Preparing the kernel matrix object 
      Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, 
         new  Size((2*2) + 1, (2*2)+1));

      // Applying dilate on the Image
      Imgproc.dilate(src, dst, kernel);

      // Writing the image
      Imgcodecs.imwrite("F:/worksp/opencv/images/sample2dilation.jpg", dst);

      System.out.println("Image Processed");
   } 
}

假定以下是上述程序中指定的输入图像sample2.jpg

执行上面示例代码,得到以下结果 -


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)