Python PIL.Image.blend() Examples
The following are 30
code examples of PIL.Image.blend().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
PIL.Image
, or try the search function
.
Example #1
Source File: sharpmask.py From sharpmask with Apache License 2.0 | 6 votes |
def _eval_prediction(self, eval_source, eval_target, seg_predictions, threshold=-1.0): self.sess.run([self.placeholder_init_op], feed_dict={self.image_placeholder: eval_source, self.training_mode: False}) score_predictions, seg_predictions = self.sess.run([self.score_predictions, seg_predictions]) print('Predicted score is {}'.format(score_predictions[0])) eval_image = io.imread(eval_source) mask = np.where(seg_predictions[0] > threshold, 255, 0) mask = np.expand_dims(mask, axis=2).astype(np.uint8) mask = cv2.resize(mask, (eval_image.shape[1], eval_image.shape[0])) mask = Image.fromarray(mask) mask = mask.convert('RGB') eval_image = Image.fromarray(eval_image) eval_image = eval_image.convert('RGB') target_img = Image.blend(eval_image, mask, 0.5) target_img.save(eval_target) print('Image with the mask applied stored at {}'.format(eval_target))
Example #2
Source File: inception_preprocessing.py From costar_plan with Apache License 2.0 | 6 votes |
def blend_images_np(image, image2, alpha=0.5): """Draws image2 on an image. Args: image: uint8 numpy array with shape (img_height, img_height, 3) image2: a uint8 numpy array of shape (img_height, img_height) with values between either 0 or 1. color: color to draw the keypoints with. Default is red. alpha: transparency value between 0 and 1. (default: 0.4) Raises: ValueError: On incorrect data type for image or image2s. """ if image.dtype != np.uint8: raise ValueError('`image` not of type np.uint8') if image2.dtype != np.uint8: raise ValueError('`image2` not of type np.uint8') if image.shape[:2] != image2.shape: raise ValueError('The image has spatial dimensions %s but the image2 has ' 'dimensions %s' % (image.shape[:2], image2.shape)) pil_image = Image.fromarray(image) pil_image2 = Image.fromarray(image2) pil_image = Image.blend(pil_image, pil_image2, alpha) np.copyto(image, np.array(pil_image.convert('RGB'))) return image
Example #3
Source File: block_stacking_reader.py From costar_plan with Apache License 2.0 | 6 votes |
def blend_images_np(image, image2, alpha=0.5): """Draws image2 on an image. Args: image: uint8 numpy array with shape (img_height, img_height, 3) image2: a uint8 numpy array of shape (img_height, img_height) with values between either 0 or 1. color: color to draw the keypoints with. Default is red. alpha: transparency value between 0 and 1. (default: 0.4) Raises: ValueError: On incorrect data type for image or image2s. """ if image.dtype != np.uint8: raise ValueError('`image` not of type np.uint8') if image2.dtype != np.uint8: raise ValueError('`image2` not of type np.uint8') if image.shape[:2] != image2.shape[:2]: raise ValueError('The image has spatial dimensions %s but the image2 has ' 'dimensions %s' % (image.shape[:2], image2.shape[:2])) pil_image = Image.fromarray(image) pil_image2 = Image.fromarray(image2) pil_image = Image.blend(pil_image, pil_image2, alpha) np.copyto(image, np.array(pil_image.convert('RGB'))) return image
Example #4
Source File: transforms.py From ChaLearn_liveness_challenge with MIT License | 6 votes |
def __call__(self, img_dict): if np.random.rand() < self.p: data_get_func = img_dict['meta']['get_item_func'] curr_idx = img_dict['meta']['idx'] max_idx = img_dict['meta']['max_idx'] other_idx = np.random.randint(0, max_idx) data4augm = data_get_func(other_idx) while (curr_idx == other_idx) or (self.same_label and data4augm['label'] != img_dict['label']): other_idx = np.random.randint(0, max_idx) data4augm = data_get_func(other_idx) alpha = np.random.rand() keys = ['rgb', 'depth', 'ir'] for key in keys: img_dict[key] = Image.blend(data4augm[key].resize(img_dict[key].size), img_dict[key], alpha=alpha) if not self.same_label: img_dict['label'] = alpha * img_dict['label'] + (1 - alpha) * data4augm['label'] return img_dict
Example #5
Source File: transforms.py From ChaLearn_liveness_challenge with MIT License | 6 votes |
def __call__(self, img_dict): if np.random.rand() < self.p: data_get_func = img_dict['meta']['get_item_func'] curr_idx = img_dict['meta']['idx'] max_idx = img_dict['meta']['max_idx'] other_idx = np.random.randint(0, max_idx) data4augm = data_get_func(other_idx) while (curr_idx == other_idx) or (self.same_label and data4augm['label'] != img_dict['label']): other_idx = np.random.randint(0, max_idx) data4augm = data_get_func(other_idx) alpha = np.random.rand() keys = ['rgb', 'depth', 'ir'] for key in keys: img_dict[key] = Image.blend(data4augm[key].resize(img_dict[key].size), img_dict[key], alpha=alpha) if not self.same_label: img_dict['label'] = alpha * img_dict['label'] + (1 - alpha) * data4augm['label'] return img_dict
Example #6
Source File: auto_augment.py From pytorch-image-models with Apache License 2.0 | 6 votes |
def _apply_basic(self, img, mixing_weights, m): # This is a literal adaptation of the paper/official implementation without normalizations and # PIL <-> Numpy conversions between every op. It is still quite CPU compute heavy compared to the # typical augmentation transforms, could use a GPU / Kornia implementation. img_shape = img.size[0], img.size[1], len(img.getbands()) mixed = np.zeros(img_shape, dtype=np.float32) for mw in mixing_weights: depth = self.depth if self.depth > 0 else np.random.randint(1, 4) ops = np.random.choice(self.ops, depth, replace=True) img_aug = img # no ops are in-place, deep copy not necessary for op in ops: img_aug = op(img_aug) mixed += mw * np.asarray(img_aug, dtype=np.float32) np.clip(mixed, 0, 255., out=mixed) mixed = Image.fromarray(mixed.astype(np.uint8)) return Image.blend(img, mixed, m)
Example #7
Source File: pildriver.py From mxnet-lambda with Apache License 2.0 | 5 votes |
def do_blend(self): """usage: blend <image:pic1> <image:pic2> <float:alpha> Replace two images and an alpha with the blended image. """ image1 = self.do_pop() image2 = self.do_pop() alpha = float(self.do_pop()) self.push(Image.blend(image1, image2, alpha))
Example #8
Source File: claptcha.py From claptcha with MIT License | 5 votes |
def image(self): r""" Tuple with a CAPTCHA text and a Image object. Images are generated on the fly, using given text source, TTF font and other parameters passable through __init__. All letters in used text are morphed. Also a line is morphed and pased onto CAPTCHA text. Additionaly, if self.noise > 1/255, a "snowy" image is merged with CAPTCHA image with a 50/50 ratio. Property returns a pair containing a string with text in returned image and image itself. :returns: ``tuple`` (CAPTCHA text, Image object) """ text = self.text w, h = self.font.getsize(text) margin_x = round(self.margin_x * w / self.w) margin_y = round(self.margin_y * h / self.h) image = Image.new('RGB', (w + 2*margin_x, h + 2*margin_y), (255, 255, 255)) # Text self._writeText(image, text, pos=(margin_x, margin_y)) # Line self._drawLine(image) # White noise noise = self._whiteNoise(image.size) if noise is not None: image = Image.blend(image, noise, 0.5) # Resize image = image.resize(self.size, resample=self.resample) return (text, image)
Example #9
Source File: core.py From image-api with MIT License | 5 votes |
def blend(alpha, filename1, filename2): # check for valid alpha alpha = float(alpha) if not 0 <= alpha <= 100: return render_template("error.html", message="Invalid alpha value (0-100)"), 400 #open images target = os.path.join(APP_ROOT, 'static/images') destination1 = "/".join([target, filename1]) destination2 = "/".join([target, filename2]) img1 = Image.open(destination1) img2 = Image.open(destination2) # check for dimensions and resize to larger ones width = max(img1.size[0], img2.size[0]) height = max(img1.size[1], img2.size[1]) img1 = img1.resize((width, height), Image.ANTIALIAS) img2 = img2.resize((width, height), Image.ANTIALIAS) # if one image in gray scale, convert the other to monochrome if len(img1.mode) < 3: img2 = img2.convert('L') elif len(img2.mode) < 3: img1 = img1.convert('L') # blend images img = Image.blend(img1, img2, float(alpha)/100) # save and return destination = "/".join([target, 'temp.png']) if os.path.isfile(destination): os.remove(destination) img.save(destination) return send_image('temp.png') # retrieve file from 'static/images' directory
Example #10
Source File: app.py From image-api with MIT License | 5 votes |
def blend(): # retrieve parameters from html form alpha = request.form['alpha'] filename1 = request.form['image'] # open images target = os.path.join(APP_ROOT, 'static/images') filename2 = 'blend.jpg' destination1 = "/".join([target, filename1]) destination2 = "/".join([target, filename2]) img1 = Image.open(destination1) img2 = Image.open(destination2) # resize images to max dimensions width = max(img1.size[0], img2.size[0]) height = max(img1.size[1], img2.size[1]) img1 = img1.resize((width, height), Image.ANTIALIAS) img2 = img2.resize((width, height), Image.ANTIALIAS) # if image in gray scale, convert stock image to monochrome if len(img1.mode) < 3: img2 = img2.convert('L') # blend and show image img = Image.blend(img1, img2, float(alpha)/100) # save and return image destination = "/".join([target, 'temp.png']) if os.path.isfile(destination): os.remove(destination) img.save(destination) return send_image('temp.png') # retrieve file from 'static/images' directory
Example #11
Source File: deepfryer.py From X-tra-Telegram with Apache License 2.0 | 5 votes |
def deepfry(img: Image) -> Image: colours = ( (randint(50, 200), randint(40, 170), randint(40, 190)), (randint(190, 255), randint(170, 240), randint(180, 250)) ) img = img.copy().convert("RGB") # Crush image to hell and back img = img.convert("RGB") width, height = img.width, img.height img = img.resize((int(width ** uniform(0.8, 0.9)), int(height ** uniform(0.8, 0.9))), resample=Image.LANCZOS) img = img.resize((int(width ** uniform(0.85, 0.95)), int(height ** uniform(0.85, 0.95))), resample=Image.BILINEAR) img = img.resize((int(width ** uniform(0.89, 0.98)), int(height ** uniform(0.89, 0.98))), resample=Image.BICUBIC) img = img.resize((width, height), resample=Image.BICUBIC) img = ImageOps.posterize(img, randint(3, 7)) # Generate colour overlay overlay = img.split()[0] overlay = ImageEnhance.Contrast(overlay).enhance(uniform(1.0, 2.0)) overlay = ImageEnhance.Brightness(overlay).enhance(uniform(1.0, 2.0)) overlay = ImageOps.colorize(overlay, colours[0], colours[1]) # Overlay red and yellow onto main image and sharpen the hell out of it img = Image.blend(img, overlay, uniform(0.1, 0.4)) img = ImageEnhance.Sharpness(img).enhance(randint(5, 300)) return img
Example #12
Source File: deepfry.py From BotHub with Apache License 2.0 | 5 votes |
def deepfry(img: Image) -> Image: colours = ( (randint(50, 200), randint(40, 170), randint(40, 190)), (randint(190, 255), randint(170, 240), randint(180, 250)) ) img = img.copy().convert("RGB") # Crush image to hell and back img = img.convert("RGB") width, height = img.width, img.height img = img.resize((int(width ** uniform(0.8, 0.9)), int(height ** uniform(0.8, 0.9))), resample=Image.LANCZOS) img = img.resize((int(width ** uniform(0.85, 0.95)), int(height ** uniform(0.85, 0.95))), resample=Image.BILINEAR) img = img.resize((int(width ** uniform(0.89, 0.98)), int(height ** uniform(0.89, 0.98))), resample=Image.BICUBIC) img = img.resize((width, height), resample=Image.BICUBIC) img = ImageOps.posterize(img, randint(3, 7)) # Generate colour overlay overlay = img.split()[0] overlay = ImageEnhance.Contrast(overlay).enhance(uniform(1.0, 2.0)) overlay = ImageEnhance.Brightness(overlay).enhance(uniform(1.0, 2.0)) overlay = ImageOps.colorize(overlay, colours[0], colours[1]) # Overlay red and yellow onto main image and sharpen the hell out of it img = Image.blend(img, overlay, uniform(0.1, 0.4)) img = ImageEnhance.Sharpness(img).enhance(randint(5, 300)) return img
Example #13
Source File: pildriver.py From ImageFusion with MIT License | 5 votes |
def do_blend(self): """usage: blend <image:pic1> <image:pic2> <float:alpha> Replace two images and an alpha with the blended image. """ image1 = self.do_pop() image2 = self.do_pop() alpha = float(self.do_pop()) self.push(Image.blend(image1, image2, alpha))
Example #14
Source File: bbox_plotter.py From kiss with GNU General Public License v3.0 | 5 votes |
def compose_image_and_visual_backprop(self, original_image, backprop_image): backprop_image = self.array_to_image( self.xp.tile(backprop_image, (3, 1, 1)) ).resize( (self.image_size.width, self.image_size.height) ) original_image = original_image.convert("RGBA") backprop_image = backprop_image.convert("RGBA") resulting_image = Image.blend(original_image, backprop_image, 0.6) return resulting_image
Example #15
Source File: test_panoptic.py From seamseg with BSD 3-Clause "New" or "Revised" License | 5 votes |
def save_prediction_image(_, panoptic_pred, img_info, out_dir, colors, num_stuff): msk, cat, obj, iscrowd = panoptic_pred img = Image.open(img_info["abs_path"]) # Prepare folders and paths folder, img_name = path.split(img_info["rel_path"]) img_name, _ = path.splitext(img_name) out_dir = path.join(out_dir, folder) ensure_dir(out_dir) out_path = path.join(out_dir, img_name + ".jpg") # Render semantic sem = cat[msk].numpy() crowd = iscrowd[msk].numpy() sem[crowd == 1] = 255 sem_img = Image.fromarray(colors[sem]) sem_img = sem_img.resize(img_info["original_size"][::-1]) # Render contours is_background = (sem < num_stuff) | (sem == 255) msk = msk.numpy() msk[is_background] = 0 contours = find_boundaries(msk, mode="outer", background=0).astype(np.uint8) * 255 contours = dilation(contours) contours = np.expand_dims(contours, -1).repeat(4, -1) contours_img = Image.fromarray(contours, mode="RGBA") contours_img = contours_img.resize(img_info["original_size"][::-1]) # Compose final image and save out = Image.blend(img, sem_img, 0.5).convert(mode="RGBA") out = Image.alpha_composite(out, contours_img) out.convert(mode="RGB").save(out_path)
Example #16
Source File: auto_augment.py From pytorch-image-models with Apache License 2.0 | 5 votes |
def _apply_blended(self, img, mixing_weights, m): # This is my first crack and implementing a slightly faster mixed augmentation. Instead # of accumulating the mix for each chain in a Numpy array and then blending with original, # it recomputes the blending coefficients and applies one PIL image blend per chain. # TODO the results appear in the right ballpark but they differ by more than rounding. img_orig = img.copy() ws = self._calc_blended_weights(mixing_weights, m) for w in ws: depth = self.depth if self.depth > 0 else np.random.randint(1, 4) ops = np.random.choice(self.ops, depth, replace=True) img_aug = img_orig # no ops are in-place, deep copy not necessary for op in ops: img_aug = op(img_aug) img = Image.blend(img, img_aug, w) return img
Example #17
Source File: draw_box_in_img.py From R2CNN_Faster-RCNN_Tensorflow with MIT License | 5 votes |
def draw_boxes_with_label_and_scores(img_array, boxes, labels, scores): img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[a_label], width=3) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') continue else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #18
Source File: draw_box_in_img.py From R2CNN-Plus-Plus_Tensorflow with MIT License | 5 votes |
def draw_boxes_with_label_and_scores(img_array, boxes, labels, scores): img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[a_label], width=3) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') continue else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #19
Source File: draw_box_in_img.py From R3Det_Tensorflow with MIT License | 5 votes |
def draw_boxes_with_label_and_scores(img_array, boxes, labels, scores, method, is_csl=False, in_graph=True): if in_graph: if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img_array = (img_array * np.array(cfgs.PIXEL_STD) + np.array(cfgs.PIXEL_MEAN_)) * 255 else: img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[a_label], width=3, method=method) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') else: if is_csl: draw_label_with_scores_csl(draw_obj, box, a_label, a_score, color='White') else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #20
Source File: draw_box_in_img.py From R3Det_Tensorflow with MIT License | 5 votes |
def draw_boxes(img_array, boxes, labels, scores, color, method, is_csl=False, in_graph=True): if in_graph: if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img_array = (img_array * np.array(cfgs.PIXEL_STD) + np.array(cfgs.PIXEL_MEAN_)) * 255 else: img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=color, width=3, method=method) # draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[1], width=3, method=method) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') else: if is_csl: draw_label_with_scores_csl(draw_obj, box, a_label, a_score, color='White') else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #21
Source File: utils.py From pbt with MIT License | 5 votes |
def mask_image(img, mask, opacity=1.00, bg=False): """ - img (PIL) - mask (PIL) - opacity (float) (default: 1.00) Returns a PIL image. """ blank = Image.new('RGB', img.size, color=0) if bg: masked_image = Image.composite(blank, img, mask) else: masked_image = Image.composite(img, blank, mask) if opacity < 1: masked_image = Image.blend(img, masked_image, opacity) return masked_image
Example #22
Source File: draw_box_in_img.py From remote_sensing_object_detection_2019 with MIT License | 5 votes |
def draw_boxes_with_label_and_scores(img_array, boxes, labels, scores): img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[a_label], width=3) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') continue else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #23
Source File: RvMediaUtility.py From MNIST-Deep-Learning with GNU General Public License v3.0 | 5 votes |
def Blend_TwoImages(image1,image2, ratio=0.5): # Load up the first and second demo images # image1 = Image.open("demo3_1.jpg") # image2 = Image.open("demo3_2.jpg") if (None==image1) or (None==image2): return # Create a new image which is the half-way blend of image1 and image2 # The "0.5" parameter denotes the half-way point of the blend function. images1And2 = Image.blend(image1, image2, ratio) # Save the resulting blend as a file # images1And2.save("demo3_3.jpg") return images1And2
Example #24
Source File: draw_box_in_img.py From RetinaNet_Tensorflow_Rotation with MIT License | 5 votes |
def draw_boxes_with_label_and_scores(img_array, boxes, labels, scores, method, in_graph=True): if in_graph: if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img_array = (img_array * np.array(cfgs.PIXEL_STD) + np.array(cfgs.PIXEL_MEAN_)) * 255 else: img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[a_label], width=3, method=method) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') continue else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #25
Source File: draw_box_in_img.py From RetinaNet_Tensorflow_Rotation with MIT License | 5 votes |
def draw_boxes(img_array, boxes, labels, scores, color, method, in_graph=True): if in_graph: if cfgs.NET_NAME in ['resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d']: img_array = (img_array * np.array(cfgs.PIXEL_STD) + np.array(cfgs.PIXEL_MEAN_)) * 255 else: img_array = img_array + np.array(cfgs.PIXEL_MEAN) img_array.astype(np.float32) boxes = boxes.astype(np.int64) labels = labels.astype(np.int32) img_array = np.array(img_array * 255 / np.max(img_array), dtype=np.uint8) img_obj = Image.fromarray(img_array) raw_img_obj = img_obj.copy() draw_obj = ImageDraw.Draw(img_obj) num_of_objs = 0 for box, a_label, a_score in zip(boxes, labels, scores): if a_label != NOT_DRAW_BOXES: num_of_objs += 1 draw_a_rectangel_in_img(draw_obj, box, color=color, width=3, method=method) # draw_a_rectangel_in_img(draw_obj, box, color=STANDARD_COLORS[1], width=3, method=method) if a_label == ONLY_DRAW_BOXES: # -1 continue elif a_label == ONLY_DRAW_BOXES_WITH_SCORES: # -2 only_draw_scores(draw_obj, box, a_score, color='White') continue else: draw_label_with_scores(draw_obj, box, a_label, a_score, color='White') out_img_obj = Image.blend(raw_img_obj, img_obj, alpha=0.7) return np.array(out_img_obj)
Example #26
Source File: auto_augment.py From pytorch-image-models with Apache License 2.0 | 5 votes |
def _enhance_increasing_level_to_arg(level, _hparams): # the 'no change' level is 1.0, moving away from that towards 0. or 2.0 increases the enhancement blend # range [0.1, 1.9] level = (level / _MAX_LEVEL) * .9 level = 1.0 + _randomly_negate(level) return level,
Example #27
Source File: demo.py From SqueezeSegV2 with BSD 2-Clause "Simplified" License | 4 votes |
def detect(): """Detect LiDAR data.""" os.environ['CUDA_VISIBLE_DEVICES'] = FLAGS.gpu with tf.Graph().as_default(): mc = kitti_squeezeSeg_config() mc.LOAD_PRETRAINED_MODEL = False mc.BATCH_SIZE = 1 # TODO(bichen): fix this hard-coded batch size. model = SqueezeSeg(mc) saver = tf.train.Saver(model.model_params) with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess: saver.restore(sess, FLAGS.checkpoint) for f in glob.iglob(FLAGS.input_path): lidar = np.load(f).astype(np.float32, copy=False)[:, :, :5] lidar_mask = np.reshape( (lidar[:, :, 4] > 0), [mc.ZENITH_LEVEL, mc.AZIMUTH_LEVEL, 1] ) lidar = (lidar - mc.INPUT_MEAN)/mc.INPUT_STD lidar = np.append(lidar, lidar_mask, axis=2) pred_cls = sess.run( model.pred_cls, feed_dict={ model.lidar_input:[lidar], model.keep_prob: 1.0, model.lidar_mask:[lidar_mask] } ) # save the data file_name = f.strip('.npy').split('/')[-1] np.save( os.path.join(FLAGS.out_dir, 'pred_'+file_name+'.npy'), pred_cls[0] ) # save the plot depth_map = Image.fromarray( (255 * _normalize(lidar[:, :, 3])).astype(np.uint8)) label_map = Image.fromarray( (255 * visualize_seg(pred_cls, mc)[0]).astype(np.uint8)) blend_map = Image.blend( depth_map.convert('RGBA'), label_map.convert('RGBA'), alpha=0.4 ) blend_map.save( os.path.join(FLAGS.out_dir, 'plot_'+file_name+'.png'))
Example #28
Source File: robot_backend_2.py From fluxclient with GNU Affero General Public License v3.0 | 4 votes |
def scan_images(self, stack_result=None, iterations=0): self.send_cmd(b"scanimages") images = [] is_hd_camera = False img_idx = 0 while True: resp = self.get_resp() if resp.startswith("binary "): mime, img_buff = self.recv_binary_buff(resp) img_buff.seek(0) try: img = Image.open(img_buff) except OSError: raise RobotError("Image broken", error_symbol=("FILE_BROKEN", )) if img.size[0] >= 720: img = img.transpose(Image.ROTATE_90) is_hd_camera = True if iterations < 1: # save sample image images.append(img) else: old_img = stack_result[img_idx] img = Image.blend(old_img, img, 0.5) fake_file = BytesIO() img.save(fake_file, "jpeg") images.append((mime, fake_file.getvalue())) img_idx = img_idx + 1 else: images.append((mime, img_buff.getvalue())) elif resp == "ok": if is_hd_camera and iterations < 1: return self.scan_images(images, iterations + 1) return images else: raise_error(resp) logger.info("exit loop")
Example #29
Source File: demo.py From SqueezeSeg with BSD 2-Clause "Simplified" License | 4 votes |
def detect(): """Detect LiDAR data.""" os.environ['CUDA_VISIBLE_DEVICES'] = FLAGS.gpu with tf.Graph().as_default(): mc = kitti_squeezeSeg_config() mc.LOAD_PRETRAINED_MODEL = False mc.BATCH_SIZE = 1 # TODO(bichen): fix this hard-coded batch size. model = SqueezeSeg(mc) saver = tf.train.Saver(model.model_params) with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess: saver.restore(sess, FLAGS.checkpoint) for f in glob.iglob(FLAGS.input_path): lidar = np.load(f).astype(np.float32, copy=False)[:, :, :5] lidar_mask = np.reshape( (lidar[:, :, 4] > 0), [mc.ZENITH_LEVEL, mc.AZIMUTH_LEVEL, 1] ) lidar = (lidar - mc.INPUT_MEAN)/mc.INPUT_STD pred_cls = sess.run( model.pred_cls, feed_dict={ model.lidar_input:[lidar], model.keep_prob: 1.0, model.lidar_mask:[lidar_mask] } ) # save the data file_name = f.strip('.npy').split('/')[-1] np.save( os.path.join(FLAGS.out_dir, 'pred_'+file_name+'.npy'), pred_cls[0] ) # save the plot depth_map = Image.fromarray( (255 * _normalize(lidar[:, :, 3])).astype(np.uint8)) label_map = Image.fromarray( (255 * visualize_seg(pred_cls, mc)[0]).astype(np.uint8)) blend_map = Image.blend( depth_map.convert('RGBA'), label_map.convert('RGBA'), alpha=0.4 ) blend_map.save( os.path.join(FLAGS.out_dir, 'plot_'+file_name+'.png'))
Example #30
Source File: app.py From image-api with MIT License | 4 votes |
def crop(): # retrieve parameters from html form x1 = int(request.form['x1']) y1 = int(request.form['y1']) x2 = int(request.form['x2']) y2 = int(request.form['y2']) filename = request.form['image'] # open image target = os.path.join(APP_ROOT, 'static/images') destination = "/".join([target, filename]) img = Image.open(destination) # check for valid crop parameters width = img.size[0] height = img.size[1] crop_possible = True if not 0 <= x1 < width: crop_possible = False if not 0 < x2 <= width: crop_possible = False if not 0 <= y1 < height: crop_possible = False if not 0 < y2 <= height: crop_possible = False if not x1 < x2: crop_possible = False if not y1 < y2: crop_possible = False # crop image and show if crop_possible: img = img.crop((x1, y1, x2, y2)) # save and return image destination = "/".join([target, 'temp.png']) if os.path.isfile(destination): os.remove(destination) img.save(destination) return send_image('temp.png') else: return render_template("error.html", message="Crop dimensions not valid"), 400 return '', 204 # blend filename with stock photo and alpha parameter