opencv学习24——图像简单修复

一、

图像的简单修复

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()

猜你喜欢

转载自blog.csdn.net/nominior/article/details/82989226