和我一起入门OpenCV with Python Day4

二、语法介绍

(二)图像处理

7.形态学变换
  1. 腐蚀和膨胀
    腐蚀是指将图像中一些毛刺去除,使图像更柔和;膨胀是指将缺陷填满使图像更饱满。
#腐蚀
cv.erode(img,kernel,iterations)
#膨胀
cv.dilate(img,kernel,iterations)

实战!

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread("C:/Users/LEGION/Pictures/bqb/xin1.jpg")

kernel=np.ones((5,5),np.uint8)
img1=cv.erode(img,kernel,iterations=6)#腐蚀
img2=cv.dilate(img,kernel,iterations=6)#膨胀

fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(10,8),dpi=100)
axes[0].imshow(img[:,:,::-1])
axes[0].set_title("yuan")
axes[1].imshow(img1[:,:,::-1])
axes[1].set_title("fu")
axes[2].imshow(img2[:,:,::-1])
axes[2].set_title("peng")
plt.show()


运行结果
在这里插入图片描述

  1. 开闭运算
    开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。
    闭运算与开运算相反,是先膨胀后腐蚀,作用是消除“闭合”物体里面的孔洞,特点:可以填充闭合区域。
	cv.morphologyEx(img, op, kernel)

参数:
op:处理方式。

  • 开运算:cv.MORPH_OPEN
  • 闭运算:cv.MORPH_CLOSE
  • 礼帽:cv.MORPH_TOPHAT
  • 黑帽:cv.MORPH_BLACKHAT

实战:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread("C:/Users/LEGION/Pictures/bqb/hei.jpg")

kernel=np.ones((20,20),np.uint8)
img1=cv.morphologyEx(img,cv.MORPH_OPEN,kernel)
img2=cv.morphologyEx(img,cv.MORPH_CLOSE,kernel)

fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(10,8),dpi=100)
axes[0].imshow(img[:,:,::-1])
axes[0].set_title("yuan")
axes[1].imshow(img1[:,:,::-1])
axes[1].set_title("open")
axes[2].imshow(img2[:,:,::-1])
axes[2].set_title("close")
plt.show()


运行结果
在这里插入图片描述

  1. 礼帽和黑帽
    礼帽 = 原始输入-开运算结果提取出刺来
    黑帽 = 闭运算-原始输入只留下一个大致轮廓
    实战!
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread("C:/Users/LEGION/Pictures/bqb/qiao.jpg")

kernel=np.ones((2,2),np.uint8)
img1=cv.morphologyEx(img,cv.MORPH_TOPHAT,kernel)
img2=cv.morphologyEx(img,cv.MORPH_BLACKHAT,kernel)
#img3=cv.morphologyEx(img,cv.MORPH_OPEN,kernel)
#img4=cv.morphologyEx(img,cv.MORPH_CLOSE,kernel)

fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(10,8),dpi=100)
axes[0].imshow(img[:,:,::-1])
axes[0].set_title("yuan")
axes[1].imshow(img1[:,:,::-1])
axes[1].set_title("tophat")
axes[2].imshow(img2[:,:,::-1])
axes[2].set_title("blackhat")
#axes[3].imshow(img3[:,:,::-1])
#axes[3].set_title("open")
#axes[4].imshow(img4[:,:,::-1])
#axes[4].set_title("close")
plt.show()


运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值