fanfuhan OpenCV 教学062 ~ opencv-062-图像形态学(膨胀与腐蚀)

资料来源: https://fanfuhan.github.io/

https://fanfuhan.github.io/2019/04/19/opencv-062/

GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV


膨胀与腐蚀是图像形态学最基础的两个操作,形态学的其它操作都是基于这两个操作基础上得到的,图像形态学是二值图像分析的重要分支学科。在OpenCV中膨胀与腐蚀对应两个相关的API,膨胀可以看成是最大值滤波,即用最大值替换中心像素点;腐蚀可以看出是最小值滤波,即用最小值替换中心像素点。


C++

#include 
#include 

using namespace std;
using namespace cv;

/*
 * 图像形态学(膨胀与腐蚀)
 */
int main() {
    Mat src = imread("../images/master.jpg");
    if (src.empty()) {
        cout << "could not load image.." << endl;
    }
    imshow("input", src);

    Mat dresult, eresult;
    // 定义结构元素3*3大小的矩形
    Mat se = getStructuringElement(MORPH_RECT, Size(3,3));
    // 膨胀
    dilate(src, dresult, se);
    // 腐蚀
    erode(src, eresult, se);

    imshow("dilate", dresult);
    imshow("erode", eresult);

    waitKey(0);
    return 0;
}


Python

import cv2 as cv
import numpy as np

src = cv.imread("D:/images/dannis2.jpg")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

# 使用3x3结构元素进行膨胀与腐蚀操作
se = np.ones((3, 3), dtype=np.uint8)
dilate = cv.dilate(src, se, None, (-1, -1), 1)
erode = cv.erode(src, se, None, (-1, -1), 1)

# 显示
cv.imshow("dilate", dilate)
cv.imshow("erode", erode)
cv.waitKey(0)
cv.destroyAllWindows()
相关文章