OpenCV(6): 梯度计算,礼帽黑帽

没看过前文也没有关系,了解腐蚀和膨胀就行。本文紧接前文图像腐蚀与膨胀。

梯度计算

梯度计算就是膨胀过后的图像减去腐蚀处理过后的图像。图像腐蚀就是消除图像的边缘,图像膨胀就是把图像边缘扩大一点。

这样得到的就是图像的轮廓。

在OpenCV中,梯度计算方法也被包括在形态学方法cv2.morphologyEx(src,op,kernel)中

src为输入图像

如果要进行梯度运算,参数设置op=cv2.MORPH_GRADIENT

kernel为采用的卷积核,本文采用卷积核为3*3的矩阵。

import cv2
import numpy as np

#定义了一个展示图片的方法
def cv_show(title,img):
    cv2.imshow(title,img)
    cv2.waitKey(0) 
    cv2.destroyAllWindows()
    return

#读取图片
img = cv2.imread('circle.png')
kernel = np.ones((3,3),dtype = np.uint8)
gradient =  cv2.morphologyEx(img, cv2.MORPH_GRADIENT,kernel)

cv_show('gradient',gradient)

原图与输出对比

原图'circle.png'

 

输出图像:

 大家也可以用自己的二值图试试,本文的图像就是windows自带的画图软件画的,画一个黑色的底和一个白色的圆就行,二值图的意思是一种由黑色和白色两种颜色组成的图像,其中只有两个像素值。

礼帽

礼帽就是原始图像减去开运算之后的图像

同样包括在形态学方法cv2.morphologyEx(src,op,kernel)中,

此时参数op = cv2.MORPH_TOPHAT 

import cv2
import numpy as np

def cv_show(title,img):
    cv2.imshow(title,img)
    cv2.waitKey(0) 
    cv2.destroyAllWindows()
    return

img = cv2.imread('Hello.png')
kernel = np.ones((3,3),dtype = np.uint8)
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)#高帽找刺
cv_show('tophat',tophat)

原图和结果对比:

原图(Hello.png) 

结果:

前文说过,开运算就是给图像把毛刺去了,那么礼帽就是原始图像减去开运算图像,得出去掉的毛刺是啥。

黑帽

运算则是将原始图像与其闭运算的差值结果,即原始图像减去其闭运算结果。

此时参数op =  CV2.MORPH_BALCKHAT

import cv2
import numpy as np

def cv_show(title,img):
    cv2.imshow(title,img)
    cv2.waitKey(0) 
    cv2.destroyAllWindows()
    return

img = cv2.imread('dongdong.png')
kernel = np.ones((3,3),dtype = np.uint8)
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)#黑帽找洞
cv_show('blackhat',blackhat)

前文说过闭运算能够去掉图片中的洞洞,而黑帽就是找出这些洞洞。

图像前后对比

原图‘dongdong.png'

 处理后

 可以看出洞洞部分被突出显示了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值