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