栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

opencv 开运算_opencv开运算和闭运算?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opencv 开运算_opencv开运算和闭运算?

目录

一、开运算与闭运算

1. 图像开运算

2.图像闭运算

二、图像梯度运算

三、礼帽运算与黑帽运算


一、开运算与闭运算

1. 图像开运算

        开运算是图像依次经过腐蚀、膨胀处理后的过程。图像被腐蚀后,去除了噪声,但是也压缩了图像;接着对腐蚀过的图像进行膨胀处理,并保留原有图像。

        图像开运算使用函数 morphologyEx() ,参数cv2.MORPH_OPEN对应开运算。

2.图像闭运算

        闭运算是图像依次经过膨胀、腐蚀处理后的过程。图像先膨胀,后腐蚀,它有助于关闭前景物体内部的小孔,或物体上的小黑点。

        图像闭运算使用函数 morphologyEx() ,参数 cv2.MORPH_CLOSE 对应闭运算。        

import cv2
import numpy as np

# 读取并修改图片大小
img = cv2.imread('dc.jpg', 0)
img = cv2.resize(img, dsize=(500, 400))

#设置卷积核
kernel = np.ones((5, 5), np.uint8)
# 开运算
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

#设置卷积核
kernel = np.ones((5, 5), np.uint8)
# 闭运算
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

# 堆叠显示并保存原图、开运算、闭运算之后的图像
res = np.hstack((img, opening, closing))
cv2.imshow('res', res)
cv2.imwrite('./yunsuan.jpg', res)

cv2.waitKey(0)

cv2.destroyAllWindows()

(结果如图 ,从左到右依次为:原图、开运算、闭运算)

 我们大概可以发现,开运算把黑色目标中的白色噪声去掉了,闭运算把白色目标中的黑色噪声去掉了。

接下来我们再看一组结果(从上到下以依次为原图、开运算、闭运算):

 (怎么样,效果是不是更明显了)


二、图像梯度运算

梯度运算:膨胀图像 — 腐蚀图像

图像梯度运算是膨胀图像减去腐蚀图像的结果,得到图像的轮廓,其中二值图像1表示白色点,0表示黑色点。

import cv2
import numpy as np

# 读取并修改图片大小
img = cv2.imread('erode1.png', 0)
img = cv2.resize(img, dsize=(500, 300))


# 梯度运算
kernel = np.ones((3, 3), np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

# 显示梯度运算之后的图像
cv2.imshow('gradient', gradient)
cv2.imwrite('./gradient.jpg', gradient)

cv2.waitKey(0)

cv2.destroyAllWindows()

如下图所示:

 

三、礼帽运算与黑帽运算

礼帽=原始输入-开运算结果

import cv2
import numpy as np

# 读取并修改图片大小
img = cv2.imread('tophat.png', 0)
img = cv2.resize(img, dsize=(500, 300))

# 礼帽运算
kernel = np.ones((5, 5), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

res = np.vstack((img, tophat))

cv2.imshow('tophat', res)
cv2.imwrite('./tophat.jpg', res)

cv2.waitKey(0)
cv2.destroyAllWindows()

 运行结果:

 

黑帽=闭运算结果-原始输入

import cv2
import numpy as np

# 读取并修改图片大小
img = cv2.imread('tophat.png', 0)
img = cv2.resize(img, dsize=(500, 300))

# 黑帽运算
kernel = np.ones((5, 5), np.uint8)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

res = np.vstack((img, blackhat))

cv2.imshow('blackhat', res)
cv2.imwrite('./blackhat.jpg', res)

运行结果:

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号