66 图像形态学—开闭操作时候结构元素应用演示 代码
import cv2 as cv
import numpy as npdef open_demo():
src = https://www.it610.com/article/cv.imread("../images/fill.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)# 图像二值化
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary1", binary)# 开操作
se1 = cv.getStructuringElement(cv.MORPH_RECT, (20, 1), (-1, -1))
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, se1)
cv.imshow("binary", binary)# 提取轮廓
contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for c in range(len(contours)):
x, y, w, h = cv.boundingRect(contours[c])
y = y - 10
h = 12
cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 1, 8, 0)
cv.imshow("result", src)def close_demo():
src = https://www.it610.com/article/cv.imread("../images/morph3.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)# 图像二值化
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)# 闭操作
se = cv.getStructuringElement(cv.MORPH_ELLIPSE, (15, 15), (-1, -1))
binary = cv.morphologyEx(binary, cv.MORPH_CLOSE, se)
cv.imshow("close", binary)close_demo()
# open_demo()
cv.waitKey(0)
cv.destroyAllWindows()
实验结果
文章图片
文章图片
解释 【【OpenCV】66 图像形态学—开闭操作时候结构元素应用演示】OpenCV中图像形态学开操作与闭操作,根据结构元素的不同可以实现不同的二值图像处理效果,我们可以通过下面的结构元素对图像进行开操作,提取二值图像中水平与垂直线,这个方法比霍夫直线检测要好用得多, 在一些应用场景中会特别有用,图像分析、OCR布局分析中形态学操作十分重要,我们通过两个例子来说明开闭操作的作用。
一, 开操作提取水平线,实现填空题横线位置提取
结构元素大小为20x1
第一张图与第二张图,是开操作提取填空题中水平横线的操作,其步骤分为:
- 转灰度
- 转二值,可选降噪
- 形态学操作,提取水平线
- 轮廓发现,确定位置
结构元素分为两种:
矩形结构元素25x25大小
圆形结构元素15x15大小
第三张图、第四张图像对应闭操作的相关运行结果。
所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。
文章图片
推荐阅读
- 人脸识别|【人脸识别系列】| 实现自动化妆
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- opencv|图像处理之椒盐噪声的添加与去除
- 人脸识别|【人脸识别系列】| 实现人脸截图保存并编写128维特征向量
- opencv|网络爬虫入门练习
- OpenCV|【OpenCV 完整例程】89. 带阻滤波器的传递函数
- OpenCV|【OpenCV 完整例程】90. 频率域陷波滤波器
- OpenCV|【OpenCV 完整例程】22. 图像添加非中文文字
- OpenCV|【OpenCV 完整例程】91. 高斯噪声、瑞利噪声、爱尔兰噪声
- opencv|python+opencv车道线,实线虚线的检测