Opencv实现图像的腐蚀、膨胀及开、闭运算

图像的腐蚀、膨胀及开闭运算

目录

图像的腐蚀、膨胀

图像的腐蚀

  • 概念:将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小,甚至无。(暗部增加)

  • 格式:cv2.erode(a,k,iterations=n)
    a:图像变量
    k:腐蚀区域
    iterations:腐蚀次数

代码展示:

python 复制代码
a = cv2.imread('at1.png')
kernel = np.ones((3,3),np.uint8)
at1_erode_3 = cv2.erode(a,kernel,iterations=3)
at1_erode_5 = cv2.erode(a,kernel,iterations=1)
cv2.imshow('at1',a)
cv2.imshow('at1',a)
cv2.waitKey(0)
cv2.imshow('at1_erode_3',at1_erode_3)
cv2.waitKey(0)
cv2.waitKey(0)
cv2.imshow('at1_erode_5',at1_erode_5)
cv2.waitKey(0)
s = cv2.imread('sun.png')
kernel = np.ones((3,3),np.uint8)
print(kernel,type(kernel))
s_erode_3 = cv2.erode(s,kernel,iterations=3)
s_erode_5 = cv2.erode(s,kernel,iterations=1)
cv2.imshow('sun',s)
cv2.imshow('sun',s)
cv2.waitKey(0)
cv2.imshow('s_erode_3',s_erode_3)
cv2.waitKey(0)
cv2.imshow('s_erode_5',s_erode_5)
cv2.waitKey(0)

运行结果:

图像的膨胀

  • 概念:将图像中的高亮区域或白色部分进行膨胀,其运行结果图比原图的高亮区域更大。(暗部减少)

  • 格式:cv2.dilate(a,k,iterations=n)
    a:图像变量
    k:腐蚀区域
    iterations:腐蚀次数

代码展示:

python 复制代码
a = cv2.imread('at1.png')
kernel = np.ones((3,3),np.uint8)
cv2.imshow('at1',a)
cv2.waitKey(0)
a_dilate = cv2.dilate(a,kernel,iterations=1)
cv2.imshow('a_dilate',a_dilate)
cv2.waitKey(0)
wenz = cv2.imread('wenz.png')
wenz_dilate = cv2.dilate(wenz,kernel,iterations=1)
cv2.imshow('wenz',wenz)
cv2.waitKey(0)
cv2.imshow('wenz_dilate',wenz_dilate)
cv2.waitKey(0)

运行结果:

图像的开、闭运算

图像的开运算

  • 概念:先腐蚀再膨胀
  • 格式:cv2.morphologyEx(a,MOPH_OPEN,K)
    a:图像变量
    k:腐蚀区域
    MOPH_OPEN:开运算操作

图像的闭运算

  • 概念:先膨胀在腐蚀
  • 格式:cv2.morphologyEx(a,MORPH_CLOSE,K)
    a:图像变量
    k:腐蚀区域
    MORPH_CLOSE:闭运算操作

代码展示:

python 复制代码
a = cv2.imread('at1.png')
kernel = np.ones((3,3),np.uint8)
a_morph_open = cv2.morphologyEx(a,cv2.MORPH_OPEN,kernel)
a_morph_close = cv2.morphologyEx(a,cv2.MORPH_CLOSE,kernel)
zw1 = cv2.imread('zw1.png')
zw1_morph_open = cv2.morphologyEx(zw1,cv2.MORPH_OPEN,kernel)
zw2 = cv2.imread('zw2.png')
kernel = np.ones((4,4),np.uint8)
zw2_morph_close = cv2.morphologyEx(zw2,cv2.MORPH_CLOSE,kernel)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.imshow('a_morph_open',a_morph_open)
cv2.waitKey(0)
cv2.imshow('a_morph_close',a_morph_close)
cv2.waitKey(0)
cv2.imshow('zw1',zw1)
cv2.waitKey(0)
cv2.imshow('zw1_morph_open',zw1_morph_open)
cv2.waitKey(0)
cv2.imshow('zw2',zw2)
cv2.waitKey(0)
cv2.imshow('zw2_morph_close',zw2_morph_close)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

相关推荐
evans在进步几秒前
LeetCode 33:搜索旋转排序数组——Java 两阶段二分查找详解
java·python·leetcode
fīɡЙtīиɡ ℡1 分钟前
大模型结构化输出
人工智能·学习
甲维斯5 分钟前
GLM5.3慢而稳,重点感谢DeepSeek衬托!
人工智能
宇的出海纪元7 分钟前
App排名变化怎么看?从上涨趋势判断产品是否值得关注
人工智能·个人开发·app开发
Rocktech_ruixun12 分钟前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
大飞记Python28 分钟前
AI大模型Token计费全解析:输入/输出、缓存命中、阶梯计价一文看懂
人工智能·缓存
Dave12054630 分钟前
Day17:Agent Memory高级设计——短期记忆、长期记忆与向量语义记忆
人工智能·学习
40岁资深老架构师尼恩31 分钟前
工业级 AI问数 AST语法 + 知识图谱语义+ 质量规则 三层安全校验 架构设计与实现
人工智能·安全·知识图谱
言乐633 分钟前
Python游戏水平测试辅助系统2
开发语言·windows·python·游戏·django
武子康37 分钟前
旧对话为什么没有恢复代码:Pi Session Tree 与上下文投影
人工智能