用python编写一个图像腐蚀和膨胀的代码,要求不调用cv库
时间: 2024-10-22 17:22:36 浏览: 21
在Python中,我们可以使用Numpy库来实现简单的图像腐蚀和膨胀操作。由于OpenCV库通常用于处理图像,这里我们将使用纯Numpy来完成这一任务。首先,让我们了解基本的概念:
- 膨胀(Dilation):增加图像边缘的宽度,使得小区域变得更大。
- 腐蚀(Erosion):减少图像边缘的宽度,移除连接区域的边界。
以下是使用Numpy实现腐蚀和膨胀的基本步骤:
```python
import numpy as np
def create_mask(size):
# 创建一个全零矩阵作为掩模
mask = np.zeros((size, size), dtype=np.uint8)
# 在中心位置设置为1,表示我们要操作的部分
mask[size//2][size//2] = 1
return mask
def erosion(image, kernel_size=3):
# 使用掩模对图像进行腐蚀
kernel = np.ones((kernel_size, kernel_size), dtype=np.uint8)
return np.bitwise_and(image, image & kernel)
def dilation(image, kernel_size=3):
# 使用掩模对图像进行膨胀
kernel = np.ones((kernel_size, kernel_size), dtype=np.uint8)
return np.logical_or(image, image | kernel)
# 示例用法
image = np.array([[0, 0, 1, 1],
[0, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 0, 0]], dtype=np.uint8) # 示例图片
# 腐蚀操作
eroded_image = erosion(image)
print("Eroded Image:")
print(eroded_image)
# 膨胀操作
dilated_image = dilation(image)
print("\nDilated Image:")
print(dilated_image)
阅读全文