小白菜的opencv学习(7)图像形态变换

在上一节过滤颜色之后我们发现,还有很多小颗粒或者漏洞存在。现在我们来学习怎么解决这个问题。
这一节我们用到了几个新的函数,比较简单就直接上代码了:

import cv2
import numpy as np

img = cv2.imread('HSV.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_red1 = np.array([160,50,0])
upper_red1 = np.array([179,255,255])
lower_red2 = np.array([0,50,0])
upper_red2 = np.array([10,255,255])
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask = mask1 + mask2
res = cv2.bitwise_and(img,img, mask = mask)
cv2.imshow('img',img)
cv2.imshow('mask',mask)
#cv2.imshow('res',res)

'''
#OPEN and CLOSE
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
cv2.imshow('Opening',opening)
cv2.imshow('Closing',closing)

#erosion and dilation
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(mask,kernel,iterations = 1)
dilation = cv2.dilate(mask,kernel,iterations = 1)
cv2.imshow('Erosion',erosion)
cv2.imshow('Dilation',dilation)
'''

'''
blur = cv2.GaussianBlur(res,(15,15),0)
cv2.imshow('Gaussian Blurring',blur)

kernel = np.ones((15,15),np.float32)/225
smoothed = cv2.filter2D(res,-1,kernel)
cv2.imshow('Averaging',smoothed)

median = cv2.medianBlur(res,15) 
cv2.imshow('Median Blur',median)

bilateral = cv2.bilateralFilter(res,15,75,75) 
cv2.imshow('bilateral Blur',bilateral)
'''

cv2.waitKey(0)
cv2.destroyAllWindows()

总共两个大注释:
第一个:
#OPEN and CLOSE 开放和关闭
#erosion and dilation 腐蚀和膨胀
这两个放在一起说是因为,开放和关闭是由腐蚀和膨胀转化而来。
开放是先腐蚀再膨胀,关闭则反过来。
可以对自己的图像进行这样的操作。
这里放上一篇看起来比较生动的介绍
图是直接拿过来的,懒得点也可以直接看下面的图。
腐蚀:
在这里插入图片描述膨胀:
在这里插入图片描述
第二个:属于平滑(模糊)的操作处理
平滑主要是为了消除噪音和伪影,opencv提供了5种不同的平滑操作:
cv2.filter2D()是简单平滑,用的并不多。
cv2.GaussianBlur()是使用高斯滤波器的平滑处理,这一种平滑处理算是比较常用的。
cv2.medianBlur()是中值滤波器。
cv2.bilateralFilter()是双边滤波器。
比较常用的由高斯滤波器和双边滤波器,高斯滤波器牺牲了边缘,这对边缘分析有很大的不好影响。而双边平滑可以认为是高斯平滑的进化版,中间加入了基于色彩强度差的高斯权重,所以比较好的保护了边缘。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值