多种掩模对图像进行修复代码
时间: 2023-10-03 21:09:16 浏览: 167
以下是基于Python和OpenCV库实现的多种掩模图像修复代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 创建掩模
mask1 = np.zeros(img.shape[:2], np.uint8)
mask2 = cv2.imread('mask.jpg', 0)
# 使用矩形掩模修复图像
rect = (100, 100, 300, 300)
cv2.rectangle(mask1, rect, 255, -1)
result1 = cv2.inpaint(img, mask1, 3, cv2.INPAINT_TELEA)
# 使用椭圆形掩模修复图像
mask2 = cv2.threshold(mask2, 220, 255, cv2.THRESH_BINARY)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
mask2 = cv2.erode(mask2, kernel, iterations=4)
result2 = cv2.inpaint(img, mask2, 3, cv2.INPAINT_TELEA)
# 显示结果图像
cv2.imshow('Original Image', img)
cv2.imshow('Rectangular Mask Result', result1)
cv2.imshow('Elliptical Mask Result', result2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们使用了两个不同的掩模,矩形和椭圆形,分别对图像进行修复。在使用矩形掩模时,我们使用cv2.rectangle函数创建一个矩形,将其填充为白色,并将其传递给cv2.inpaint函数进行修复。在使用椭圆形掩模时,我们首先将掩模二值化并腐蚀,以便更好地定义需要修复的区域,然后使用cv2.getStructuringElement函数构造一个椭圆形内核,并使用cv2.erode函数对掩模进行形态学变换。最后,我们将掩模传递给cv2.inpaint函数,使用cv2.INPAINT_TELEA算法对图像进行修复。
阅读全文