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