北京网站建设哪家设计好,wordpress全站静太化,类似wordpress的应用,工厂关键词网络推广#xff08;1#xff09;程序清单
形态学操作是一种图像处理技术#xff0c;它基于数学形态学理论#xff0c;用于改变图像的形状和结构。它主要通过结构元素的腐蚀和膨胀操作来实现。
#!/usr/bin/env python
# -*- coding:utf-8 -*-author: LIFEI
t… 1程序清单
形态学操作是一种图像处理技术它基于数学形态学理论用于改变图像的形状和结构。它主要通过结构元素的腐蚀和膨胀操作来实现。
#!/usr/bin/env python
# -*- coding:utf-8 -*-author: LIFEI
time: 2023/8/31 21:57
file: test7.py
project: pythonProject
describe: CWNU
# -------------------------------------------------(one)----------------------------------------------
# -------------------------------------------------(two)----------------------------------------------# -------------------------------------------------(one)----------------------------------------------
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt# ..........................
# 程序清单
# 1、侵蚀和膨胀所需函数
# 内核的大小决定着对图像的操作程度大小内核会在图像中滑动当内核中全为1时才会变为1否则为0
# 迭代次数决定着对图像的操作次数
# cv.erode() # 参数分别为原始图像、内核、迭代次数
# cv.dilate() # 参数分别为原始图像、内核、迭代次数# 2、形态学梯度、开运算、闭运算、顶帽、黑帽所需函数
# cv.morphologyEx() # 参数分别为原始图像、cv.MORPH_ 方法名 、内核
# 运算方法分别有:
# cv.MORPH_GRADIENT # 形态学梯度
# cv.MORPH_OPEN # 开运算
# cv.MORPH_CLOSE # 闭运算
# cv.MORPH_TOPHAT # 顶帽
# cv.MORPH_BLACKHAT # 黑帽# 3、内核的形状确立方法
# cv.getStructuringElement() # 参数分别为cv.MORPH_ 形状名、内核的大小
# 形状方法有:
# cv.MORPH_RECT # 矩形内核
# cv.MORPH_ELLIPSE # 椭圆内核
# cv.MORPH_CROSS # 十字内核
# .......................... 2算法实现
腐蚀操作通过将结构元素与图像进行逐像素的比较将结构元素完全包含在图像中的区域保留下来而其他区域则被腐蚀掉。这可以用于去除图像中的噪声、分离连接的物体以及缩小物体的大小。
膨胀操作与腐蚀操作相反它通过将结构元素与图像进行逐像素的比较将结构元素覆盖在图像上从而扩大图像中的区域。这可以用于填充图像中的空洞、连接分离的物体以及增大物体的大小。
img cv.imread(rD:\data\test_img\test7.png)
img cv.cvtColor(img, cv.COLOR_BGR2RGB)# 内核
kernel np.ones((5, 5), np.uint8)# 侵蚀操作
erosion cv.erode(img, kernel, iterations2) # iterations表示核运动迭代的次数# 膨胀操作
dilation cv.dilate(img, kernel, iterations2) # iterations表示核运动迭代的次数
plt.figure(1)
plt.subplot(131), plt.imshow(img), plt.title(ori img)
plt.subplot(132), plt.imshow(erosion), plt.title(erosion img)
plt.subplot(133), plt.imshow(dilation), plt.title(dilation img)
plt.show() 形态学操作还包括其他一些操作如开运算、闭运算、顶帽运算和底帽运算。
开运算是先进行腐蚀操作再进行膨胀操作可以用于去除图像中的细小物体。闭运算是先进行膨胀操作再进行腐蚀操作可以用于填充图像中的小孔。
# 重新建立内核核
kernel2 np.ones((11, 11), np.uint8)
# 开操作
# 假设噪声位于后景 即在对象外面
open_img cv.imread(rD:\data\test_img\test7-7-7.png)
open_img cv.cvtColor(open_img, cv.COLOR_BGR2RGB)
opening cv.morphologyEx(open_img, cv.MORPH_OPEN, kernel2)# 闭操作
# 假设噪声位于前景 即在对象里面
close_img cv.imread(rD:\data\test_img\test7-7.png)
close_img cv.cvtColor(close_img, cv.COLOR_BGR2RGB)
closing cv.morphologyEx(close_img, cv.MORPH_CLOSE, kernel2)
plt.figure(2)
plt.subplot(221), plt.imshow(open_img), plt.title(ori open_img)
plt.subplot(222), plt.imshow(opening), plt.title(opening)
plt.subplot(223), plt.imshow(close_img), plt.title(ori close_img)
plt.subplot(224), plt.imshow(closing), plt.title(closing)
plt.show()顶帽运算是原始图像与开运算之差底帽运算是闭运算与原始图像之差它们可以用于提取图像中的细节信息。
# 形态学梯度
# 侵蚀与膨胀之间的差异 可以用于提取对象的边界
gradient cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)# 顶帽运算
# 即原始图像与开运算的差异, 用于提取噪声
hot_hat cv.morphologyEx(open_img, cv.MORPH_TOPHAT, kernel2)# 黑帽运算
# 即原始图像与闭运算的差异用于提取噪声
black_hat cv.morphologyEx(close_img, cv.MORPH_BLACKHAT, kernel2)plt.figure(3)
plt.subplot(131), plt.imshow(gradient), plt.title(gradient img)
plt.subplot(132), plt.imshow(hot_hat), plt.title(hot_hat img)
plt.subplot(133), plt.imshow(black_hat), plt.title(black_hat img)
plt.show()