设计程序,实现去除图 4.3 中的矩形区域外的噪声,并填充矩形区域内部了。
时间: 2024-02-13 10:05:34 浏览: 160
好的,这个问题可以通过以下步骤来解决:
1. 读取图像并显示
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('4.3.png')
# 显示原图
cv2.imshow('Original Image', img)
cv2.waitKey(0)
```
2. 创建掩模
```python
# 创建掩模
mask = np.zeros(img.shape[:2], dtype=np.uint8)
# 定义矩形区域的左上角坐标和右下角坐标
rect_start = (50, 50)
rect_end = (250, 150)
# 填充矩形区域
cv2.rectangle(mask, rect_start, rect_end, 255, -1)
# 显示掩模
cv2.imshow('Mask', mask)
cv2.waitKey(0)
```
3. 对图像进行掩膜操作
```python
# 对图像进行掩膜操作
masked_img = cv2.bitwise_and(img, img, mask=mask)
# 显示掩膜后的图像
cv2.imshow('Masked Image', masked_img)
cv2.waitKey(0)
```
4. 对掩膜后的图像进行中值滤波
```python
# 对掩膜后的图像进行中值滤波
median = cv2.medianBlur(masked_img, 5)
# 显示中值滤波后的图像
cv2.imshow('Median Filter', median)
cv2.waitKey(0)
```
5. 将中值滤波后的图像填充到掩模中
```python
# 将中值滤波后的图像填充到掩模中
result = img.copy()
result[mask == 255] = median[mask == 255]
# 显示最终结果
cv2.imshow('Result', result)
cv2.waitKey(0)
```
完整代码如下:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('4.3.png')
# 创建掩模
mask = np.zeros(img.shape[:2], dtype=np.uint8)
rect_start = (50, 50)
rect_end = (250, 150)
cv2.rectangle(mask, rect_start, rect_end, 255, -1)
# 对图像进行掩膜操作
masked_img = cv2.bitwise_and(img, img, mask=mask)
# 对掩膜后的图像进行中值滤波
median = cv2.medianBlur(masked_img, 5)
# 将中值滤波后的图像填充到掩模中
result = img.copy()
result[mask == 255] = median[mask == 255]
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Mask', mask)
cv2.imshow('Masked Image', masked_img)
cv2.imshow('Median Filter', median)
cv2.imshow('Result', result)
cv2.waitKey(0)
```
希望这个程序能够解决你的问题。
阅读全文