def restore_prev_image(self): if state.now_image() is None: return None # TODO: It's definitely not gui functionality. # but.. where to place this function? tool.py? import shutil shutil.copy( state.prev_image(), state.now_image() ) self.update_gui()
def rm_txt(self): imgpath = state.now_image() maskpath = state.now_mask() if imgpath is None: return None self.saveMask.emit(maskpath) # save edited mask image = io.load(imgpath, io.IMAGE) mask =(io.load(maskpath, io.MASK) if Path(maskpath).exists() else io.mask2segmap(self.gen_mask())) inpainted = core.inpainted(image, mask) io.save(state.now_image(), inpainted) self.update_gui()
def rm_txt_all(self): ''' Remove text of all image. NOTE: If image has previously saved masks, then use it. ''' if state.now_image() is None: return None self.saveMask.emit(state.now_mask()) # save current edited mask no_mask_path_pairs = fp.lremove( lambda pair: Path(pair.mask).exists(), state.img_mask_pairs() ) new_masks = fp.map( lambda p: imgpath2mask(p.img), no_mask_path_pairs ) for mask,pair in tqdm(zip(new_masks, no_mask_path_pairs), total=len(no_mask_path_pairs), desc='Generate Masks'): io.save(pair.mask, mask) img_paths,mask_paths = state.project() images= fp.map(lambda p: io.load(p, io.IMAGE), img_paths) masks = fp.map(lambda p: io.load(p, io.MASK), mask_paths) inpainteds = fp.map(core.inpainted, images,masks) for ipath,inpainted in tqdm(zip(img_paths, inpainteds), total=len(img_paths), desc=' Remove Texts'): io.save(ipath, inpainted) self.update_gui()
def test_restore_prev_image_copy_img_from_prev_images_to_images(clear_state, tmpdir_factory): # Create fixture tmp_proj = tmpdir_factory.mktemp('tmp_proj') shutil.rmtree(tmp_proj) # dst dir must not exist for copytree shutil.copytree('./fixture/real_proj/', tmp_proj) open_project(tmp_proj) main_window.rm_txt_all() prev_img = io.load(state.prev_image(),io.IMAGE) processed = io.load(state.now_image(), io.IMAGE) assert np.any(np.not_equal( processed, prev_img )) main_window.restore_prev_image() restored = io.load(state.now_image(), io.IMAGE) assert np.array_equal( restored, prev_img )
def gen_mask(self): imgpath = state.now_image() if imgpath is None: return None mask = imgpath2mask(imgpath) io.save(state.now_mask(), mask) self.update_gui() return mask
def gen_mask_all(self): imgpath = state.now_image() if imgpath is None: return None mask = fp.go(imgpath, lambda path: io.load(path, io.NDARR), core.segmap, io.segmap2mask) io.save(state.now_mask(), mask) self.update_gui() return mask
def gen_mask_all(self): ''' Generate NEW mask of all image. NOTE: All previously saved masks will be overwritten. ''' if state.now_image() is None: return None masks = fp.map(imgpath2mask, state.img_paths) for path,mask in tqdm(zip(state.mask_paths, masks), total=len(state.img_paths), desc='Generate Masks'): io.save(path, mask) self.update_gui() return masks
def update_gui(self): now_imgpath = state.now_image() if now_imgpath: self.updateImage.emit(now_imgpath) self.provideMask.emit(state.now_mask()) self.im_model.update()