Python cv2.INTER_LINEAR Examples
The following are 30
code examples of cv2.INTER_LINEAR().
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
cv2
, or try the search function
.
Example #1
Source File: video_transforms.py From DDPAE-video-prediction with MIT License | 7 votes |
def resize(video, size, interpolation): if interpolation == 'bilinear': inter = cv2.INTER_LINEAR elif interpolation == 'nearest': inter = cv2.INTER_NEAREST else: raise NotImplementedError shape = video.shape[:-3] video = video.reshape((-1, *video.shape[-3:])) resized_video = np.zeros((video.shape[0], size[1], size[0], video.shape[-1])) for i in range(video.shape[0]): img = cv2.resize(video[i], size, inter) if len(img.shape) == 2: img = img[:, :, np.newaxis] resized_video[i] = img return resized_video.reshape((*shape, size[1], size[0], video.shape[-1]))
Example #2
Source File: data_augment.py From ssds.pytorch with MIT License | 7 votes |
def _elastic(image, p, alpha=None, sigma=None, random_state=None): """Elastic deformation of images as described in [Simard2003]_ (with modifications). .. [Simard2003] Simard, Steinkraus and Platt, "Best Practices for Convolutional Neural Networks applied to Visual Document Analysis", in Proc. of the International Conference on Document Analysis and Recognition, 2003. Based on https://gist.github.com/erniejunior/601cdf56d2b424757de5 From: https://www.kaggle.com/bguberfain/elastic-transform-for-data-augmentation """ if random.random() > p: return image if alpha == None: alpha = image.shape[0] * random.uniform(0.5,2) if sigma == None: sigma = int(image.shape[0] * random.uniform(0.5,1)) if random_state is None: random_state = np.random.RandomState(None) shape = image.shape[:2] dx, dy = [cv2.GaussianBlur((random_state.rand(*shape) * 2 - 1) * alpha, (sigma|1, sigma|1), 0) for _ in range(2)] x, y = np.meshgrid(np.arange(shape[1]), np.arange(shape[0])) x, y = np.clip(x+dx, 0, shape[1]-1).astype(np.float32), np.clip(y+dy, 0, shape[0]-1).astype(np.float32) return cv2.remap(image, x, y, interpolation=cv2.INTER_LINEAR, borderValue= 0, borderMode=cv2.BORDER_REFLECT)
Example #3
Source File: nclt.py From hierarchical_loc with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, fin, scale=1.0, fmask=None): self.fin = fin # read in distort with open(fin, 'r') as f: header = f.readline().rstrip() chunks = re.sub(r'[^0-9,]', '', header).split(',') self.mapu = np.zeros((int(chunks[1]), int(chunks[0])), dtype=np.float32) self.mapv = np.zeros((int(chunks[1]), int(chunks[0])), dtype=np.float32) for line in f.readlines(): chunks = line.rstrip().split(' ') self.mapu[int(chunks[0]), int(chunks[1])] = float(chunks[3]) self.mapv[int(chunks[0]), int(chunks[1])] = float(chunks[2]) # generate a mask self.mask = np.ones(self.mapu.shape, dtype=np.uint8) self.mask = cv2.remap(self.mask, self.mapu, self.mapv, cv2.INTER_LINEAR) kernel = np.ones((30, 30), np.uint8) self.mask = cv2.erode(self.mask, kernel, iterations=1) # crop black regions out h, w = self.mask.shape self.x_lim = [f(np.where(self.mask[int(h/2), :])[0]) for f in [np.min, np.max]] self.y_lim = [f(np.where(self.mask[:, int(w/2)])[0]) for f in [np.min, np.max]]
Example #4
Source File: image.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def resize(im, short, max_size): """ only resize input image to target size and return scale :param im: BGR image input by opencv :param short: one dimensional size (the short side) :param max_size: one dimensional max size (the long side) :return: resized image (NDArray) and scale (float) """ im_shape = im.shape im_size_min = np.min(im_shape[0:2]) im_size_max = np.max(im_shape[0:2]) im_scale = float(short) / float(im_size_min) # prevent bigger axis from being more than max_size: if np.round(im_scale * im_size_max) > max_size: im_scale = float(max_size) / float(im_size_max) im = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, interpolation=cv2.INTER_LINEAR) return im, im_scale
Example #5
Source File: opencv.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def resize(src, size, interpolation=cv2.INTER_LINEAR): """Decode image from str buffer. Wrapper for cv2.imresize that uses mx.nd.NDArray Parameters ---------- src : NDArray image in (width, height, channels) size : tuple target size in (width, height) interpolation : int same as interpolation for cv2.imresize Returns ------- img : NDArray resized image """ hdl = NDArrayHandle() check_call(_LIB.MXCVResize(src.handle, mx_uint(size[0]), mx_uint(size[1]), interpolation, ctypes.byref(hdl))) return mx.nd.NDArray(hdl)
Example #6
Source File: ScreenGrab.py From BiblioPixelAnimations with MIT License | 6 votes |
def step(self, amt=1): image = self._capFrame() if self.crop: image = image[self._cropY + self.yoff:self._ih - self._cropY + self.yoff, self._cropX + self.xoff:self._iw - self._cropX + self.xoff] else: t, b, l, r = self._pad image = cv2.copyMakeBorder( image, t, b, l, r, cv2.BORDER_CONSTANT, value=[0, 0, 0]) resized = cv2.resize(image, (self.width, self.height), interpolation=cv2.INTER_LINEAR) if self.mirror: resized = cv2.flip(resized, 1) for y in range(self.height): for x in range(self.width): self.layout.set(x, y, tuple(resized[y, x][0:3]))
Example #7
Source File: map_utils.py From DOTA_models with Apache License 2.0 | 6 votes |
def resize_maps(map, map_scales, resize_method): scaled_maps = [] for i, sc in enumerate(map_scales): if resize_method == 'antialiasing': # Resize using open cv so that we can compute the size. # Use PIL resize to use anti aliasing feature. map_ = cv2.resize(map*1, None, None, fx=sc, fy=sc, interpolation=cv2.INTER_LINEAR) w = map_.shape[1]; h = map_.shape[0] map_img = PIL.Image.fromarray((map*255).astype(np.uint8)) map__img = map_img.resize((w,h), PIL.Image.ANTIALIAS) map_ = np.asarray(map__img).astype(np.float32) map_ = map_/255. map_ = np.minimum(map_, 1.0) map_ = np.maximum(map_, 0.0) elif resize_method == 'linear_noantialiasing': map_ = cv2.resize(map*1, None, None, fx=sc, fy=sc, interpolation=cv2.INTER_LINEAR) else: logging.error('Unknown resizing method') scaled_maps.append(map_) return scaled_maps
Example #8
Source File: datasets.py From pruning_yolov3 with GNU General Public License v3.0 | 6 votes |
def __next__(self): self.count += 1 img0 = self.imgs.copy() if cv2.waitKey(1) == ord('q'): # q to quit cv2.destroyAllWindows() raise StopIteration # Letterbox img = [letterbox(x, new_shape=self.img_size, interp=cv2.INTER_LINEAR)[0] for x in img0] # Stack img = np.stack(img, 0) # Normalize RGB img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 return self.sources, img, img0, None
Example #9
Source File: map_utils.py From DOTA_models with Apache License 2.0 | 6 votes |
def generate_egocentric_maps(scaled_maps, map_scales, map_crop_sizes, loc, x_axis, y_axis, theta): maps = [] for i, (map_, sc, map_crop_size) in enumerate(zip(scaled_maps, map_scales, map_crop_sizes)): maps_i = np.array(get_map_to_predict(loc*sc, x_axis, y_axis, map_, map_crop_size, interpolation=cv2.INTER_LINEAR)[0]) maps_i[np.isnan(maps_i)] = 0 maps.append(maps_i) return maps
Example #10
Source File: test.py From Parsing-R-CNN with MIT License | 6 votes |
def get_blob(ims, target_scale, target_max_size, flip): ims_processed = [] for im in ims: if flip: im = im[:, ::-1, :] im = im.astype(np.float32, copy=False) im_shape = im.shape im_size_min = np.min(im_shape[0:2]) im_size_max = np.max(im_shape[0:2]) im_scale = float(target_scale) / float(im_size_min) # Prevent the biggest axis from being more than max_size if np.round(im_scale * im_size_max) > target_max_size: im_scale = float(target_max_size) / float(im_size_max) im_resized = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, interpolation=cv2.INTER_LINEAR) im_processed = im_resized.transpose(2, 0, 1) im_processed = torch.from_numpy(im_processed).to(torch.device(cfg.DEVICE)) ims_processed.append(im_processed) return ims_processed
Example #11
Source File: face_attack.py From Adversarial-Face-Attack with GNU General Public License v3.0 | 6 votes |
def detect(self, img): """ img: rgb 3 channel """ minsize = 20 # minimum size of face threshold = [0.6, 0.7, 0.7] # three steps's threshold factor = 0.709 # scale factor bounding_boxes, _ = FaceDet.detect_face( img, minsize, self.pnet, self.rnet, self.onet, threshold, factor) area = (bounding_boxes[:, 2] - bounding_boxes[:, 0]) * (bounding_boxes[:, 3] - bounding_boxes[:, 1]) face_idx = area.argmax() bbox = bounding_boxes[face_idx][:4] # xy,xy margin = 32 x0 = np.maximum(bbox[0] - margin // 2, 0) y0 = np.maximum(bbox[1] - margin // 2, 0) x1 = np.minimum(bbox[2] + margin // 2, img.shape[1]) y1 = np.minimum(bbox[3] + margin // 2, img.shape[0]) x0, y0, x1, y1 = bbox = [int(k + 0.5) for k in [x0, y0, x1, y1]] cropped = img[y0:y1, x0:x1, :] scaled = cv2.resize(cropped, (160, 160), interpolation=cv2.INTER_LINEAR) return scaled, bbox
Example #12
Source File: datasets.py From pruning_yolov3 with GNU General Public License v3.0 | 6 votes |
def load_image(self, index): # loads 1 image from dataset img = self.imgs[index] if img is None: img_path = self.img_files[index] img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # size ratio if self.augment and r < 1: # if training (NOT testing), downsize to inference shape h, w, _ = img.shape img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest # Augment colorspace if self.augment: augment_hsv(img, hgain=self.hyp['hsv_h'], sgain=self.hyp['hsv_s'], vgain=self.hyp['hsv_v']) return img
Example #13
Source File: blob.py From cascade-rcnn_Pytorch with MIT License | 6 votes |
def prep_im_for_blob(im, pixel_means, pixel_stds, target_size, max_size): """Mean subtract and scale an image for use in a blob.""" im = im.astype(np.float32, copy=False) im /= 255.0 im -= pixel_means im /= pixel_stds # im = im[:, :, ::-1] im_shape = im.shape im_size_min = np.min(im_shape[0:2]) im_size_max = np.max(im_shape[0:2]) im_scale = float(target_size) / float(im_size_min) # Prevent the biggest axis from being more than MAX_SIZE # if np.round(im_scale * im_size_max) > max_size: # im_scale = float(max_size) / float(im_size_max) # im = imresize(im, im_scale) im = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, interpolation=cv2.INTER_LINEAR) return im, im_scale
Example #14
Source File: utils.py From DeepLab_v3 with MIT License | 6 votes |
def multiscale_single_test(image, input_scales, predictor): ''' Predict image semantic segmentation labeling using multi-scale inputs. Inputs: images: numpy array, [height, width, channel], channel = 3. input_scales: list of scale factors. e.g., [0.5, 1.0, 1.5]. predictor: prediction function which takes one scaled image as input and outputs its semantic segmentation labelings. Returns: Averaged predicted logits of multi-scale inputs ''' image_height_raw = image.shape[0] image_width_raw = image.shape[1] multiscale_outputs = [] for input_scale in input_scales: image_height_scaled = round(image_height_raw * input_scale) image_width_scaled = round(image_width_raw * input_scale) image_scaled = cv2.resize(image, (image_width_scaled, image_height_scaled), interpolation=cv2.INTER_LINEAR) output = predictor(inputs=[image_scaled], target_height=image_height_raw, target_width=image_width_raw)[0] multiscale_outputs.append(output) output_mean = np.mean(multiscale_outputs, axis=0) return output_mean
Example #15
Source File: image_processing.py From Deep-Feature-Flow-Segmentation with MIT License | 6 votes |
def resize(im, target_size, max_size): """ only resize input image to target size and return scale :param im: BGR image input by opencv :param target_size: one dimensional size (the short side) :param max_size: one dimensional max size (the long side) :return: """ im_shape = im.shape im_size_min = np.min(im_shape[0:2]) im_size_max = np.max(im_shape[0:2]) im_scale = float(target_size) / float(im_size_min) # prevent bigger axis from being more than max_size: if np.round(im_scale * im_size_max) > max_size: im_scale = float(max_size) / float(im_size_max) im = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, interpolation=cv2.INTER_LINEAR) return im, im_scale
Example #16
Source File: lucidDream.py From pyLucid with MIT License | 6 votes |
def spline_transform_multi(img, mask): bimask=mask>0 M,N=np.where(bimask) w=np.ptp(N)+1 h=np.ptp(M)+1 kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3)) bound=cv2.dilate(bimask.astype('uint8'),kernel)-bimask y,x=np.where(bound>0) if x.size>4: newxy=thin_plate_transform(x,y,w,h,mask.shape[:2],num_points=5) new_img=cv2.remap(img,newxy,None,cv2.INTER_LINEAR) new_msk=cv2.remap(mask,newxy,None,cv2.INTER_NEAREST) elif x.size>0: new_img=img new_msk=mask return new_img,new_msk
Example #17
Source File: utils.py From RacingRobot with MIT License | 6 votes |
def preprocessImage(image, width, height): """ Preprocessing script to convert image into neural net input array :param image: (cv2 image) :param width: (int) :param height: (int) :return: (numpy tensor) """ # Crop the image r = ROI image = image[int(r[1]):int(r[1] + r[3]), int(r[0]):int(r[0] + r[2])] # The resizing is a bottleneck in the computation x = cv2.resize(image, (width, height), interpolation=cv2.INTER_LINEAR) # Normalize x = x / 255. x -= 0.5 x *= 2 return x
Example #18
Source File: camvid.py From Fast_Seg with Apache License 2.0 | 6 votes |
def __getitem__(self, index): datafiles = self.files[index] image = cv2.imread(datafiles["img"], cv2.IMREAD_COLOR) label = cv2.imread(datafiles["label"], cv2.IMREAD_GRAYSCALE) size = image.shape name = datafiles["name"] if self.f_scale != 1: image = cv2.resize(image, None, fx=self.f_scale, fy=self.f_scale, interpolation=cv2.INTER_LINEAR) label = cv2.resize(label, None, fx=self.f_scale, fy=self.f_scale, interpolation = cv2.INTER_NEAREST) label[label == 11] = self.ignore_label image = np.asarray(image, np.float32) if self.rgb: image = image[:, :, ::-1] ## BGR -> RGB image /= 255 ## using pytorch pretrained models image -= self.mean image /= self.vars image = image.transpose((2, 0, 1)) # HWC -> CHW # print('image.shape:',image.shape) return image.copy(), label.copy(), np.array(size), name
Example #19
Source File: helpers.py From Advanced_Lane_Lines with MIT License | 6 votes |
def wrap_images(src, dst): """ apply the wrap to images """ # load M, Minv img_size = (1280, 720) pickle_file = open("../helper/trans_pickle.p", "rb") trans_pickle = pickle.load(pickle_file) M = trans_pickle["M"] Minv = trans_pickle["Minv"] # loop the file folder image_files = glob.glob(src+"*.jpg") for idx, file in enumerate(image_files): print(file) img = mpimg.imread(file) image_wraped = cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR) file_name = file.split("\\")[-1] print(file_name) out_image = dst+file_name print(out_image) # no need to covert RGB to BGR since 3 channel is same image_wraped = cv2.cvtColor(image_wraped, cv2.COLOR_RGB2BGR) cv2.imwrite(out_image, image_wraped)
Example #20
Source File: view_perspective.py From Advanced_Lane_Lines with MIT License | 6 votes |
def test(): pickle_file = open("trans_pickle.p", "rb") trans_pickle = pickle.load(pickle_file) M = trans_pickle["M"] Minv = trans_pickle["Minv"] img_size = (1280, 720) image_files = glob.glob("../output_images/undistort/*.jpg") for idx, file in enumerate(image_files): print(file) img = mpimg.imread(file) warped = cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR) file_name = file.split("\\")[-1] print(file_name) out_image = "../output_images/perspect_trans/"+file_name print(out_image) # convert to opencv BGR format warped = cv2.cvtColor(warped, cv2.COLOR_RGB2BGR) cv2.imwrite(out_image, warped)
Example #21
Source File: datasets.py From pytorch-segmentation-toolbox with MIT License | 6 votes |
def __getitem__(self, index): datafiles = self.files[index] image = cv2.imread(datafiles["img"], cv2.IMREAD_COLOR) image = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR) size = image.shape name = osp.splitext(osp.basename(datafiles["img"]))[0] image = np.asarray(image, np.float32) image = (image - image.min()) / (image.max() - image.min()) img_h, img_w, _ = image.shape pad_h = max(self.crop_h - img_h, 0) pad_w = max(self.crop_w - img_w, 0) if pad_h > 0 or pad_w > 0: image = cv2.copyMakeBorder(image, 0, pad_h, 0, pad_w, cv2.BORDER_CONSTANT, value=(0.0, 0.0, 0.0)) image = image.transpose((2, 0, 1)) return image, np.array(size), name
Example #22
Source File: functional.py From opencv_transforms with MIT License | 6 votes |
def resized_crop(img, i, j, h, w, size, interpolation=cv2.INTER_LINEAR): """Crop the given numpy ndarray and resize it to desired size. Notably used in :class:`~torchvision.transforms.RandomResizedCrop`. Args: img (numpy ndarray): Image to be cropped. i: Upper pixel coordinate. j: Left pixel coordinate. h: Height of the cropped image. w: Width of the cropped image. size (sequence or int): Desired output size. Same semantics as ``scale``. interpolation (int, optional): Desired interpolation. Default is ``cv2.INTER_CUBIC``. Returns: PIL Image: Cropped image. """ assert _is_numpy_image(img), 'img should be numpy image' img = crop(img, i, j, h, w) img = resize(img, size, interpolation=interpolation) return img
Example #23
Source File: utils.py From DeepLab_v3 with MIT License | 6 votes |
def multiscale_single_validate(image, label, input_scales, validator): image_height_raw = image.shape[0] image_width_raw = image.shape[1] multiscale_outputs = [] multiscale_losses = [] for input_scale in input_scales: image_height_scaled = round(image_height_raw * input_scale) image_width_scaled = round(image_width_raw * input_scale) image_scaled = cv2.resize(image, (image_width_scaled, image_height_scaled), interpolation=cv2.INTER_LINEAR) output, loss = validator(inputs=[image_scaled], target_height=image_height_raw, target_width=image_width_raw, labels=[label]) multiscale_outputs.append(output[0]) multiscale_losses.append(loss) output_mean = np.mean(multiscale_outputs, axis=0) loss_mean = np.mean(multiscale_losses) return output_mean, loss_mean
Example #24
Source File: demo.py From ICDAR-2019-SROIE with MIT License | 6 votes |
def resize_image(img): img_size = img.shape im_size_min = np.min(img_size[0:2]) im_size_max = np.max(img_size[0:2]) im_scale = float(600) / float(im_size_min) if np.round(im_scale * im_size_max) > 1200: im_scale = float(1200) / float(im_size_max) new_h = int(img_size[0] * im_scale) new_w = int(img_size[1] * im_scale) new_h = new_h if new_h // 16 == 0 else (new_h // 16 + 1) * 16 new_w = new_w if new_w // 16 == 0 else (new_w // 16 + 1) * 16 re_im = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) return re_im, (new_h / img_size[0], new_w / img_size[1])
Example #25
Source File: transforms.py From opencv_transforms with MIT License | 5 votes |
def __init__(self, size, scale=(0.08, 1.0), ratio=(3. / 4., 4. / 3.), interpolation=cv2.INTER_LINEAR): self.size = (size, size) self.interpolation = interpolation self.scale = scale self.ratio = ratio
Example #26
Source File: cityscapes.py From Fast_Seg with Apache License 2.0 | 5 votes |
def generate_scale_label(self, image, label): f_scale = 0.7 + random.randint(0, 14) / 10.0 image = cv2.resize(image, None, fx=f_scale, fy=f_scale, interpolation = cv2.INTER_LINEAR) label = cv2.resize(label, None, fx=f_scale, fy=f_scale, interpolation = cv2.INTER_NEAREST) return image, label
Example #27
Source File: commons.py From connecting_the_dots with MIT License | 5 votes |
def get_patterns(path='syn', imsizes=[], crop=True): pattern_size = imsizes[0] if path == 'syn': np.random.seed(42) pattern = np.random.uniform(0,1, size=pattern_size) pattern = (pattern < 0.1).astype(np.float32) pattern.reshape(*imsizes[0]) else: pattern = cv2.imread(path) pattern = pattern.astype(np.float32) pattern /= 255 if pattern.ndim == 2: pattern = np.stack([pattern for idx in range(3)], axis=2) if crop and pattern.shape[0] > pattern_size[0] and pattern.shape[1] > pattern_size[1]: r0 = (pattern.shape[0] - pattern_size[0]) // 2 c0 = (pattern.shape[1] - pattern_size[1]) // 2 pattern = pattern[r0:r0+imsizes[0][0], c0:c0+imsizes[0][1]] patterns = [] for imsize in imsizes: pat = cv2.resize(pattern, (imsize[1],imsize[0]), interpolation=cv2.INTER_LINEAR) patterns.append(pat) return patterns
Example #28
Source File: image_utils.py From Fast_Seg with Apache License 2.0 | 5 votes |
def random_scale_with_length(img, gt, length): size = random.choice(length) sh = size sw = size img = cv2.resize(img, (sw, sh), interpolation=cv2.INTER_LINEAR) gt = cv2.resize(gt, (sw, sh), interpolation=cv2.INTER_NEAREST) return img, gt, size
Example #29
Source File: util.py From derplearning with MIT License | 5 votes |
def resize(image, size): """ Resize the image to the target (w, h) """ is_larger = size[0] > image.shape[1] or size[1] > image.shape[0] interpolation = cv2.INTER_LINEAR if is_larger else cv2.INTER_AREA return cv2.resize(image, size, interpolation=interpolation)
Example #30
Source File: TripletSubmit.py From pneumothorax-segmentation with MIT License | 5 votes |
def apply_thresholds(mask, n_objects, area_threshold, top_score_threshold, bottom_score_threshold, leak_score_threshold, use_contours, min_contour_area): if n_objects == 1: crazy_mask = (mask > top_score_threshold).astype(np.uint8) if crazy_mask.sum() < area_threshold: return -1 mask = (mask > bottom_score_threshold).astype(np.uint8) else: mask = (mask > leak_score_threshold).astype(np.uint8) if min_contour_area > 0: choosen = remove_smallest(mask, min_contour_area) elif use_contours: choosen = extract_largest(mask, n_objects) else: choosen = mask * 255 if mask.shape[0] == 1024: reshaped_mask = choosen else: reshaped_mask = cv2.resize( choosen, dsize=(1024, 1024), interpolation=cv2.INTER_LINEAR ) reshaped_mask = (reshaped_mask > 127).astype(int) * 255 return mask2rle(reshaped_mask.T, 1024, 1024)