腐蚀主要函数:cv2.erode(img,kernel,iterations)
膨胀主要函数:cv2.dilate(img,kernel,iterations)
开运算:opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
闭运算:closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
1、腐蚀图像和膨胀图像例程:
#coding=utf-8
import cv2
import numpy as np
img = cv2.imread('D:/binary.bmp',0)
#OpenCV定义的结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
#腐蚀图像
eroded = cv2.erode(img,kernel)
#显示腐蚀后的图像
cv2.imshow(\"Eroded Image\
#膨胀图像
dilated = cv2.dilate(img,kernel)
#显示膨胀后的图像
cv2.imshow(\"Dilated Image\
#原图像
cv2.imshow(\"Origin\
#NumPy定义的结构元素
NpKernel = np.uint8(np.ones((3,3)))
Nperoded = cv2.erode(img,NpKernel)
#显示腐蚀后的图像
cv2.imshow(\"Eroded by NumPy kernel\
cv2.waitKey(0)
cv2.destroyAllWindows()
2、开运算和闭运算例程:
开运算和闭运算就是将腐蚀和膨胀按照一定的次序进行处理
#coding=utf-8
import cv2
import numpy as np
img = cv2.imread('D:/binary.bmp',0)
#定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#显示腐蚀后的图像
cv2.imshow(\"Close\
#开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
#显示腐蚀后的图像
cv2.imshow(\"Open\
cv2.waitKey(0)
cv2.destroyAllWindows()
3、创建窗口滚动条实现动态腐蚀与膨胀的功能例程:
import cv2
import numpy as np
import matplotlib.pyplot as plt
def nothing(x):
pass
cv2.namedWindow('image')
img=cv2.imread('images/111.jpg')
cv2.namedWindow('image')
cv2.createTrackbar('Er/Di','image',0,1,nothing)
#创建腐蚀或膨胀选择滚动条,只有两个值
cv2.createTrackbar('size','image',0,21,nothing)
#创建卷积核大小滚动条
while(1):
s = cv2.getTrackbarPos('Er/Di', 'image')
si=cv2.getTrackbarPos('size','image')
#分别接收两个滚动条的数据
k=cv2.waitKey(1)
kernel = np.ones((si,si), np.uint8)
#根据滚动条数据确定卷积核大小
erroding = cv2.erode(img, kernel)
dilation = cv2.dilate(img, kernel)
if k==27:
Break #esc键退出
if s==0:
cv2.imshow('image',erroding)
else:
cv2.imshow('image',dilation) #判断是腐蚀还是膨胀
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务