主要应用:
二值图像,OCR;
水平或者垂直线的提取:主要与开闭操作选取的开闭结构元素有关,
行矩阵可以用来提取竖直线,列矩阵可以用来提取水平线!!
原理:
开操作(open):腐蚀+膨胀,输入图像+结构原素
消除二值图像中小的白色干扰区域,比如噪点,先腐蚀掉,再膨胀还原,(干掉白的)
去掉小的干扰块
闭操作(close):膨胀+腐蚀,输入图像+结构原素
消除二值图像中小的黑色干扰区域,比如噪点,先膨胀掉,再腐蚀还原(干掉黑的)
填充闭合区域
import cv2 as cv
import numpy as np
def open_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
print('ret:', ret)
cv.imshow('binary:', binary)
kernel=cv.getStructuringElement(cv.MORPH_RECT,(5,5))
#open
open_r=cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
cv.imshow('open',open_r)
#close
close_r = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
cv.imshow('close', close_r)
src=cv.imread('D:/pycharm/pycharmproject/test.jpg')
cv.imshow('src',src)
open_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()