可以做哪些网站有哪些,网站建设如何做报价,什么平台可以发广告引流,东莞网上销售网站建设文章目录 一、膨胀操作二、开运算与闭运算三、梯度运算四、礼帽与黑帽操作 一、膨胀操作
膨胀操作也就是根据图片将边缘的一些细节给丰富#xff0c;处理的程度取决于卷积核的大小还有膨胀次数。也就是腐蚀操作的相反操作#xff08;腐蚀操作参考我的上一篇文章 点击跳转处理的程度取决于卷积核的大小还有膨胀次数。也就是腐蚀操作的相反操作腐蚀操作参考我的上一篇文章 点击跳转。
拿下面的这张照片来举个例子 通过膨胀操作
# 导入OpenCV库用于图像处理
import cv2
# 导入matplotlib的pyplot模块用于图像显示
import matplotlib.pyplot as plt
# 导入numpy库用于数值计算
import numpy as np# 使用cv2.imread()函数读取位于指定路径的图像文件
img cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\4.jpg)# 创建一个30x30的矩形结构元素用于形态学操作
# np.ones((30,30),np.uint8)创建一个所有元素都是1的30x30矩阵
kernel np.ones((30, 30), np.uint8)# 使用cv2.dilate()函数对图像进行膨胀操作一次
dilate_1 cv2.dilate(img, kernel, iterations1)# 使用cv2.dilate()函数对图像进行膨胀操作两次
dilate_2 cv2.dilate(img, kernel, iterations2)# 使用cv2.dilate()函数对图像进行膨胀操作三次
dilate_3 cv2.dilate(img, kernel, iterations3)# 使用numpy的hstack()函数将三个膨胀后的图像水平堆叠在一起
res np.hstack((dilate_1, dilate_2, dilate_3))# 显示堆叠后的图像
cv2.imshow(res, res)
# 等待用户按下任意键
cv2.waitKey(0)
# 关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()膨胀一次
膨胀两次 膨胀三次
二、开运算与闭运算
开运算是先进行腐蚀操作然后进行膨胀操作用于去除小的物体
拿以下图片来举例子 经过开运算
# 导入OpenCV库用于图像处理
import cv2
# 导入matplotlib的pyplot模块用于图像显示
import matplotlib.pyplot as plt
# 导入numpy库用于数值计算
import numpy as np# 使用cv2.imread()函数读取位于指定路径的图像文件
img cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\3.jpg)# 创建一个5x5的矩形结构元素用于形态学操作
# np.ones((5,5),np.uint8)创建一个所有元素都是1的5x5矩阵
kernel np.ones((10, 10), np.uint8)# 使用cv2.morphologyEx()函数对图像进行开运算
# 开运算是先进行腐蚀操作然后进行膨胀操作用于去除小的物体
# cv2.MORPH_OPEN指定要执行的形态学操作是开运算
opening cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# 使用cv2.imshow()函数显示开运算后的图像
cv2.imshow(opening, opening)
# 使用cv2.waitKey(0)函数等待直到用户按下任意键
cv2.waitKey(0)
# 使用cv2.destroyAllWindows()函数关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()运行结果 具体优化效果根据卷积核而进行调整改变。
闭运算是先进行膨胀操作然后进行腐蚀操作用于填充物体内部的小洞或连接临近物体
经过闭运算
# 导入OpenCV库用于图像处理
import cv2
# 导入matplotlib的pyplot模块用于图像显示
import matplotlib.pyplot as plt
# 导入numpy库用于数值计算
import numpy as np# 使用cv2.imread()函数读取位于指定路径的图像文件
img cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\3.jpg)# 创建一个10x10的矩形结构元素用于形态学操作
# np.ones((10,10),np.uint8)创建一个所有元素都是1的10x10矩阵
kernel np.ones((10, 10), np.uint8)# 使用cv2.morphologyEx()函数对图像进行闭运算
# 闭运算是先进行膨胀操作然后进行腐蚀操作用于填充物体内部的小洞或连接临近物体
# cv2.MORPH_CLOSE指定要执行的形态学操作是闭运算
opening cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)# 使用cv2.imshow()函数显示闭运算后的图像
cv2.imshow(opening, opening)
# 使用cv2.waitKey(0)函数等待直到用户按下任意键
cv2.waitKey(0)
# 使用cv2.destroyAllWindows()函数关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()运行结果
三、梯度运算
梯度 膨胀 - 腐蚀形态学梯度是膨胀和腐蚀操作的差值用于突出物体的边缘
展示膨胀和腐蚀的效果
import cv2
import matplotlib.pyplot as plt
import numpy as npimg cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\4.jpg)kernel np.ones((7, 7),np.uint8)
dilate cv2.dilate(img,kernel,iterations 5)
erosion cv2.erode(img,kernel,iterations 5)res np.hstack((dilate , erosion))cv2.imshow(res,res)
cv2.waitKey(0)
cv2.destroyAllWindows()梯度计算
# 导入OpenCV库用于图像处理
import cv2
# 导入matplotlib的pyplot模块用于图像显示
import matplotlib.pyplot as plt
# 导入numpy库用于数值计算
import numpy as np# 使用cv2.imread()函数读取位于指定路径的图像文件
img cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\4.jpg)# 创建一个7x7的矩形结构元素用于形态学操作
# np.ones((7,7),np.uint8)创建一个所有元素都是1的7x7矩阵
kernel np.ones((7, 7), np.uint8)# 使用cv2.morphologyEx()函数计算图像的形态学梯度
# 形态学梯度是膨胀和腐蚀操作的差值用于突出物体的边缘
# cv2.MORPH_GRADIENT指定要执行的形态学操作是梯度运算
gradient cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)# 使用cv2.imshow()函数显示形态学梯度后的图像
cv2.imshow(gradient, gradient)
# 使用cv2.waitKey(0)函数等待直到用户按下任意键
cv2.waitKey(0)
# 使用cv2.destroyAllWindows()函数关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()运算结果 四、礼帽与黑帽操作
礼帽 原始输入-开运算结果 礼帽变换的目的是突出图像中比其周围环境更亮的物体或特征。 黑帽 闭运算结果 - 原始输入 黑帽变换是图像的腐蚀版本减去图像的膨胀版本用于突出比周围暗的物体
礼帽
import cv2
import matplotlib.pyplot as plt
import numpy as npimg cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\3.jpg)kernel np.ones((10, 10), np.uint8)
tophat cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)cv2.imshow(gradient,tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()运算结果 原始输入带有毛刺- 开运算结果去除毛刺 周围的毛刺上图 黑帽
# 导入OpenCV库用于图像处理
import cv2
# 导入matplotlib的pyplot模块用于图像显示
import matplotlib.pyplot as plt
# 导入numpy库用于数值计算
import numpy as np# 使用cv2.imread()函数读取位于指定路径的图像文件
img cv2.imread(E:\\XUEXI\\Python_learn\\tupian\\3.jpg)# 创建一个10x10的矩形结构元素用于形态学操作
# np.ones((10,10),np.uint8)创建一个所有元素都是1的10x10矩阵
kernel np.ones((10, 10), np.uint8)# 使用cv2.morphologyEx()函数对图像进行黑帽变换
# 黑帽变换是图像的腐蚀版本减去图像的膨胀版本用于突出比周围暗的物体
# cv2.MORPH_BLACKHAT指定要执行的形态学操作是黑帽变换
blackhat cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)# 使用cv2.imshow()函数显示黑帽变换后的图像
cv2.imshow(blackhat, blackhat)
# 使用cv2.waitKey(0)函数等待直到用户按下任意键
cv2.waitKey(0)
# 使用cv2.destroyAllWindows()函数关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()运行结果