def upload_content(list_image_string, list_filenames, click, downsample, n_rows, n_cols): downsample = int(downsample) if list_image_string is not None: order = np.argsort(list_filenames) image_list = [ np.asarray(image_string_to_PILImage(list_image_string[i])) for i in order ] if downsample > 1: ratio = 1.0 / downsample multichannel = image_list[0].ndim > 2 image_list = [ transform.rescale(image, ratio, multichannel=multichannel, preserve_range=True).astype(np.uint8) for image in image_list ] res = tile_images(image_list, n_rows, n_cols) return array_to_data_url(res) elif click: res = demo_data() tmp = array_to_data_url(res) return tmp raise PreventUpdate
def remove_background(json_data, image): if json_data: # ➊ imageが値をもつ場合、それを基に画像のnumpy.ndarrayに変換する if image: image_array = image_string_to_PILImage(image) image_array = np.asarray(image_array) # imageが値をもたない場合、imreadで画像を読み込む else: image_array = io.imread(image_path) # ➋ 画像のアレイのサイズを変数shapeに代入する shape = image_array.shape[:2] # ➌ 書き込みのJSONデータをパースし、ブール値に変換する try: mask = parse_jsonstring(json_data, shape=shape) except IndexError: raise PreventUpdate if mask.sum() > 0: # ➍ seg = superpixel_color_segmentation(image_array, mask) else: seg = np.ones(shape) filled_image = np.copy(image_array) filled_image[np.logical_not(seg)] = np.array([255, 255, 255], dtype="uint8") # ➎ return array_to_data_url(filled_image) # ➏ else: PreventUpdate
def modify_result(contrast, brightness, image_string): if image_string is None: raise PreventUpdate img = np.asarray(image_string_to_PILImage(image_string)) img = contrast_adjust(img, contrast) img = brightness_adjust(img, brightness) return array_to_data_url(img)
def update_figure_upload(string, image, algorithm): print("update figure") if string: if image is None: im = img image = img else: im = image_string_to_PILImage(image) im = np.asarray(im) shape = im.shape[:2] mask = parse_jsonstring(string, shape=shape) if mask.sum() > 0: seg = segmentation_generic(im, mask, mode=algorithm) else: seg = np.zeros(shape) return image_with_contour(im, seg, shape=shape) else: raise PreventUpdate
def update_figure_upload(string, image, height, width, birdeye, calculation): if string: if image is None: im = img_app3 else: im = image_string_to_PILImage(image) im = np.asarray(im) dat, locsgrid, locs, gray, output_image = solve_sudoku( im, beyeview=birdeye, digit_h=(height[0], height[1]), digit_w=(width[0], width[1])) if calculation: dat = compute(locsgrid, locs, gray, output_image) return array_to_data_url(dat) else: raise PreventUpdate
def update_figure_upload(string, image): if string: if image is None: im = img_app3 else: im = image_string_to_PILImage(image) im = np.asarray(im) shape = im.shape[:2] try: mask = parse_jsonstring(string, shape=shape) except IndexError: raise PreventUpdate if mask.sum() > 0: seg = superpixel_color_segmentation(im, mask) else: seg = np.ones(shape) fill_value = 255 * np.ones(3, dtype=np.uint8) dat = np.copy(im) dat[np.logical_not(seg)] = fill_value return array_to_data_url(dat) else: raise PreventUpdate
def untile_images(image_string, n_rows, n_cols): big_im = np.asarray(image_string_to_PILImage(image_string)) tiles = [np.split(im, n_cols, axis=1) for im in np.split(big_im, n_rows)] return np.array(tiles)