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()