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()
相关文章