コード例 #1
0
def main():
    args = parse_args()

    image = imread(args.input_image)  # 读取图像,存储顺序是RGB
    mask = imread(args.mask, as_grey=True)  # 读取掩膜,存储顺序是RGB

    output_image = Inpainter(image,
                             mask,
                             patch_size=args.patch_size,
                             plot_progress=args.plot_progress).inpaint()
    imsave(args.output, output_image, quality=100)
コード例 #2
0
def inpaint_image(image, mode, p1, p2):
    print mode
    print image.shape
    if mode == 'ss':
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        size = 15
        print 'blobbing'
        blob_array = segment_image(image)
        pixel_val_1 = np.array([p1[1], p1[0]])
        pixel_val_2 = np.array([p2[1], p2[0]])
        obs = []
        min_dist = [10000000000000] * 5
        target = [None] * 5
        print 'selecting'
        for blob in blob_array:
            x1, y1, x2, y2 = blob.bbox
            dist = abs(x1 - pixel_val_1[0]) + abs(y1 - pixel_val_1[1]) + abs(
                x2 - pixel_val_2[0]) + abs(y2 - pixel_val_2[1])
            for i, m in enumerate(min_dist):
                if m > dist and blob_check(blob, pixel_val_1, pixel_val_2):
                    min_dist[i] = dist
                    target[i] = blob

        image_copy, mask = blob_plot(image, target[-1])

        #dst = cv2.inpaint(image_copy,mask,3,cv2.INPAINT_TELEA)
        inp = Inpainter(image, mask * 255, 4)
        inp.inpaint()
        dst = inp.result
        dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
        return dst

    elif mode == 'gc':
        img = image
        mask = np.zeros(img.shape[:2], np.uint8)
        bgdModel = np.zeros((1, 65), np.float64)
        fgdModel = np.zeros((1, 65), np.float64)
        rect = (p1[0], p1[1], p2[0], p2[1])
        cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5,
                    cv2.GC_INIT_WITH_RECT)
        mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
        img2 = img * mask2[:, :, np.newaxis]
        img = img - img2
        # dst = inpaint.inpaint_biharmonic(img,mask2,multichannel =True)
        #dst = cv2.inpaint(img,mask2,3,cv2.INPAINT_TELEA)
        inp = Inpainter(image, mask * 255, 4)
        inp.inpaint()
        dst = inp.result
        return dst
コード例 #3
0
def main():
    args = parse_args()

    image = imread(args.input_image)
    mask = imread(args.mask, as_gray=True)

    output_image = Inpainter(
        image,
        mask,
        patch_size=args.patch_size,
        plot_progress=args.plot_progress,
        include_target_in_dict=args.include_target_in_dict).inpaint()
    imsave(args.output, output_image, quality=100)
コード例 #4
0
ファイル: __main__.py プロジェクト: j40903272/VC2018
def main():
    args = parse_args()

    image = imread(args.input_image)
    #image = cv2.imread(args.input_image)
    #image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    mask = imread(args.mask, as_grey=True)
    print('start inpaint', image.shape, mask.shape)
    output_image = Inpainter(image,
                             mask,
                             patch_size=args.patch_size,
                             plot_progress=args.plot_progress).inpaint()
    print('finish!', 'save to', args.output)
    imsave(args.output, output_image, quality=100)
コード例 #5
0
def Image_Inpainting(Org_Image, Target_Image, filename, org_dims):
    image = imread(Org_Image)
    mask = imread(Target_Image, as_grey=True)

    output_image = Inpainter(
        image,
        mask,
        filename,
        patch_size=9,
        plot_progress=True,
    ).inpaint()
    imsave(os.path.join(app.config['DOWNLOAD_FOLDER'], filename),
           output_image,
           quality=100)
    path = os.path.dirname(
        os.path.abspath(__file__)) + '/Gif/' + filename.split('.')[0] + '.gif'
    folder_Name = 'downloaded_files/'
    my_bucket.upload_file(
        os.path.join(app.config['DOWNLOAD_FOLDER'], filename),
        folder_Name + filename)

    folder_Name = 'GIF/'
    print(path)
    my_bucket.upload_file(path, folder_Name + filename.split('.')[0] + '.gif')
コード例 #6
0
ファイル: inpaint.py プロジェクト: sakokassounian/background
    crop_inpaintMask = inpaintMask[yl:yr, xr:xl]
    fig = plt.figure()
    ax  = fig.add_subplot(111)
    ax.axis('off')
    plt.imshow(crop_inpaintMask, vmin=vmin, vmax=vmax)
    plt.close('all')
    time.sleep(1)
    crop_gray_originalImage = np.uint16(np.round(((2**16 - 1)*(crop_originalImage-np.nanmin(originalImage)))/(np.nanmax(originalImage)-np.nanmin(originalImage))))

else:
    crop_gray_originalImage = None
    crop_inpaintMask = None
    yl, xr = 0, 0

gray_originalImage = np.uint16(np.round(((2**16 - 1)*(originalImage-np.nanmin(originalImage)))/(np.nanmax(originalImage)-np.nanmin(originalImage))))
model = Inpainter(gray_originalImage, inpaintMask, crop_gray_originalImage, crop_inpaintMask, halfPatchWidth, select)
model.inpaint(file_name, directory_2 , yl, xr)

result = model.result
float_result = (result*(np.nanmax(originalImage)-np.nanmin(originalImage)))/(2**16 - 1)+np.nanmin(originalImage)
for x in range(originalImage.shape[0]):
    for y in range(originalImage.shape[1]):
        if math.isnan(originalImage[x, y]):
            if inpaintMask[x, y] == 0:
                float_result[x, y] = 'nan'

[xcoord, ycoord] = np.load(coord_path)
cx = int(np.nanmean(xcoord))
cy = int(np.nanmean(ycoord))

f = plt.figure()
コード例 #7
0
from skimage.io import imread, imsave
from inpainter import Inpainter

image = imread('resources/image6.jpg')
mask = imread('resources/mask6.jpg', as_grey=True)
output_image = Inpainter(image, mask, patch_size=16,
                         plot_progress=True).inpaint()

imsave('output1.jpg', output_image, quality=100)