一、
圖像的簡單修複
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()