图像形态学(二)
开闭操作
开操作(open)
1、基于膨胀与腐蚀操作组合形成的
2、主要应用在二值图像分析,灰度图像也可
3、开操作 = 腐蚀+膨胀,输入图像 + 结构元素
二值图像对OCR识别、特征分析、轮廓匹配等都有重要作用
变成灰度图像的时候,背景最好是黑色的,前景(图像)是白色的,输入图像加上结构元素再进行先腐蚀后膨胀完成开操作
开操作可以帮助消除图像中的小的干扰区域,去除一些干扰噪点
开操作—去除小的干扰块
闭操作(close)
1、基于膨胀与腐蚀操作组合形成的
2、主要应用在二值图像分析,灰度图像也可
3、开操作 = 膨胀+腐蚀,输入图像 + 结构元素
闭操作可以填充小的封闭区域
闭操作—填充闭合区域
还可进行水平或者垂直直线提取
#模板(1, 15)开操作模板为行矩阵,可以检测出所有竖线
#模板(15, 1)开操作模板为行矩阵,可以检测出所有横线
import cv2 as cv
import numpy as np
print("----------------hi.python!---------------------------")
src = cv.imread("C:/Users/LENOVO/Desktop/test image/fm.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) # 创建一个window
cv.imshow("input image",src) # 通过窗口名字调用读取的图片到当前的窗口上面
def open_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (10 , 1)) # 根据自己需要选择结构大小和结构形状
# cv.MORPH_RECT矩形的结构元素 模板是方形,对方形图像不会有影响 # (1, 15)开操作模板为行矩阵,可以检测出所有竖线 #(15, 1)开操作模板为行矩阵,可以检测出所有横线
result = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)# 形态学操作api,,,OP是指要做的操作
cv.imshow("open_morphology_demo", result)
open_demo(src)
def close_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (12, 12)) # cv.MORPH_RECT矩形的结构元素 对矩形内部进行操作
result = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)# 形态学操作api,,,OP是指要做的操作
cv.imshow("close_morphology_demo", result)
# close_demo(src)
cv.waitKey(0) # 告诉系统需要delay,等待用户的下一个操作 常见 : 设置 waitKey(0) , 则表示程序会无限制的等待用户的按键事件
cv.destroyAllWindows() # 响应操作以后就会释放内存