对膨胀后的图像做高斯平滑,dilation = cv2.dilate(matrix.astype(np.uint8), kernel, iterations=2) # 将膨胀后的矩阵转为灰度图像 gray = dilation * 255 # 将灰度图像转为二值图像 binary = gray.astype(np.uint8)
时间: 2024-03-21 18:39:03 浏览: 113
在这段代码中,通过使用`cv2.dilate()`函数对输入矩阵进行膨胀操作,得到膨胀后的矩阵。然后将膨胀后的矩阵转为灰度图像,再将灰度图像转为二值图像。这些操作可以使得二值图像的边缘更加平滑。
接下来,可以使用`cv2.GaussianBlur()`函数对二值图像进行高斯平滑。以下是示例代码:
```python
import cv2
import numpy as np
# 定义输入矩阵和膨胀核
matrix = np.array([[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 1, 1, 1, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0]], dtype=np.uint8)
kernel = np.ones((3, 3), dtype=np.uint8)
# 对输入矩阵进行膨胀操作
dilation = cv2.dilate(matrix, kernel, iterations=2)
# 将膨胀后的矩阵转为灰度图像
gray = dilation * 255
# 将灰度图像转为二值图像
binary = gray.astype(np.uint8)
# 对二值图像进行高斯平滑
gaussian = cv2.GaussianBlur(binary, (5, 5), 0)
# 显示结果
cv2.imshow('Original', matrix)
cv2.imshow('Dilation', dilation)
cv2.imshow('Binary', binary)
cv2.imshow('Gaussian', gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先定义了一个输入矩阵和一个膨胀核,然后使用`cv2.dilate()`函数对输入矩阵进行膨胀操作,得到膨胀后的矩阵。接着将膨胀后的矩阵转为灰度图像,并将灰度图像转为二值图像。最后使用`cv2.GaussianBlur()`函数对二值图像进行高斯平滑,得到平滑后的图像。可以根据需要调整卷积核的大小和类型来得到不同的平滑效果。
阅读全文