一、
图像的简单修复
1.实现过程:通过蒙版图像(提取的污损部分图像),通过算法使用周围像素填充
2. cv2.inpaint(src, inpaintMask, inpaintRadius, flags[, dst])
Src,需要修补的原图像
inpaintMask,修补蒙版
inpaintRadius,修补半径
flags,修补算法,有基于快速行进算法 cv2.INPAINT_TELEA及基于流体动力学并使用了偏微分方程 cv2.INPAINT_NS
二、
import cv2
import numpy as np
def dmgImage(img):
for i in range(200,300):
img[200,i] = (255, 255, 255)
img[200,i+200] = (255, 255, 255)
for i in range(300,400):
img[300,i] = (255,255,255)
cv2.imwrite('image02.jpg',img)
return img
def maskImg(maskShape):
mask = np.zeros(maskShape,np.uint8)
for i in range(200,300):
mask[200,i] = 255
mask[200,i+200] = 255
for i in range(300,400):
mask[300,i] = 255
return mask
def repair1(dmg,mask):
dstImg = cv2.inpaint(dmg,mask,3,cv2.INPAINT_TELEA)
return dstImg
def repair2(dmg,mask):
dstImg = cv2.inpaint(dmg, mask, 3, cv2.INPAINT_TELEA)
return dstImg
img = cv2.imread('image01.jpg',1)
imgHeight,imgWidth,_ = img.shape
dmg = dmgImage(img)
mask = maskImg((imgHeight,imgWidth))
dst1 = repair1(dmg,mask)
dst2 = repair2(dmg,mask)
cv2.imshow('damaged image',dmg)
cv2.imshow('mask image',mask)
cv2.imshow('dst image1',dst1)
cv2.imshow('dst image2',dst2)
cv2.waitKey(0)
cv2.destroyAllWindows()