Python cv2.IMREAD_COLOR Examples
The following are 30
code examples of cv2.IMREAD_COLOR().
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: test_matting.py From closed-form-matting with MIT License | 7 votes |
def test_solution_close_to_original_implementation(self): image = cv2.imread('testdata/source.png', cv2.IMREAD_COLOR) / 255.0 scribles = cv2.imread('testdata/scribbles.png', cv2.IMREAD_COLOR) / 255.0 alpha = closed_form_matting.closed_form_matting_with_scribbles(image, scribles) foreground, background = solve_foreground_background(image, alpha) matlab_alpha = cv2.imread('testdata/matlab_alpha.png', cv2.IMREAD_GRAYSCALE) / 255.0 matlab_foreground = cv2.imread('testdata/matlab_foreground.png', cv2.IMREAD_COLOR) / 255.0 matlab_background = cv2.imread('testdata/matlab_background.png', cv2.IMREAD_COLOR) / 255.0 sad_alpha = np.mean(np.abs(alpha - matlab_alpha)) sad_foreground = np.mean(np.abs(foreground - matlab_foreground)) sad_background = np.mean(np.abs(background - matlab_background)) self.assertLess(sad_alpha, 1e-2) self.assertLess(sad_foreground, 1e-2) self.assertLess(sad_background, 1e-2)
Example #2
Source File: utils.py From Tensorflow-Cookbook with MIT License | 7 votes |
def load_test_image(image_path, img_width, img_height, img_channel): if img_channel == 1 : img = cv2.imread(image_path, flags=cv2.IMREAD_GRAYSCALE) else : img = cv2.imread(image_path, flags=cv2.IMREAD_COLOR) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.resize(img, dsize=(img_width, img_height)) if img_channel == 1 : img = np.expand_dims(img, axis=0) img = np.expand_dims(img, axis=-1) else : img = np.expand_dims(img, axis=0) img = img/127.5 - 1 return img
Example #3
Source File: zipreader.py From PoseWarper with Apache License 2.0 | 6 votes |
def imread(filename, flags=cv2.IMREAD_COLOR): global _im_zfile path = filename pos_at = path.index('@') if pos_at == -1: print("character '@' is not found from the given path '%s'"%(path)) assert 0 path_zip = path[0: pos_at] path_img = path[pos_at + 2:] if not os.path.isfile(path_zip): print("zip file '%s' is not found"%(path_zip)) assert 0 for i in range(len(_im_zfile)): if _im_zfile[i]['path'] == path_zip: data = _im_zfile[i]['zipfile'].read(path_img) return cv2.imdecode(np.frombuffer(data, np.uint8), flags) _im_zfile.append({ 'path': path_zip, 'zipfile': zipfile.ZipFile(path_zip, 'r') }) data = _im_zfile[-1]['zipfile'].read(path_img) return cv2.imdecode(np.frombuffer(data, np.uint8), flags)
Example #4
Source File: main.py From DexiNed with MIT License | 6 votes |
def __getitem__(self, idx): # get data sample image_path, label_path = self.data_index[idx] # load data image = cv.imread(image_path, cv.IMREAD_COLOR) label = cv.imread(label_path, cv.IMREAD_GRAYSCALE) image, label = self.transform(img=image, gt=label) return dict(images=image, labels=label)
Example #5
Source File: data_loader.py From DeblurGAN-tf with MIT License | 6 votes |
def read_image(path, resize_or_crop=None, image_size=(256,256)): image = cv2.imread(path, cv2.IMREAD_COLOR) image = image/255.0 * 2.0 - 1.0 assert resize_or_crop != None assert image_size != None if resize_or_crop == 'resize': image = cv2.resize(image, image_size, interpolation=cv2.INTER_AREA) elif resize_or_crop == 'crop': image = cv2.crop(image, image_size) if np.size(np.shape(image)) == 3: image = np.expand_dims(image, axis=0) image = np.array(image, dtype=np.float32) return image
Example #6
Source File: data_loader.py From DeblurGAN-tf with MIT License | 6 votes |
def read_image_pair(pair_path, resize_or_crop=None, image_size=(256,256)): image_blur = cv2.imread(pair_path[0], cv2.IMREAD_COLOR) image_blur = image_blur / 255.0 * 2.0 - 1.0 image_real = cv2.imread(pair_path[1], cv2.IMREAD_COLOR) image_real = image_real / 255.0 * 2.0 - 1.0 if resize_or_crop != None: assert image_size != None if resize_or_crop == 'resize': image_blur = cv2.resize(image_blur, image_size, interpolation=cv2.INTER_AREA) image_real = cv2.resize(image_real, image_size, interpolation=cv2.INTER_AREA) elif resize_or_crop == 'crop': image_blur = cv2.crop(image_blur, image_size) image_real = cv2.crop(image_real, image_size) else: raise if np.size(np.shape(image_blur)) == 3: image_blur = np.expand_dims(image_blur, axis=0) if np.size(np.shape(image_real)) == 3: image_real = np.expand_dims(image_real, axis=0) image_blur = np.array(image_blur, dtype=np.float32) image_real = np.array(image_real, dtype=np.float32) return image_blur, image_real
Example #7
Source File: cocostuff.py From PanopticSegmentation with MIT License | 6 votes |
def _load_data(self, image_id): # Set paths image_path = osp.join(self.root, "images", image_id + ".jpg") label_path = osp.join(self.root, "annotations", image_id + ".mat") # Load an image image = cv2.imread(image_path, cv2.IMREAD_COLOR).astype(np.float32) # Load a label map if self.version == "1.1": label = sio.loadmat(label_path)["S"].astype(np.int64) label -= 1 # unlabeled (0 -> -1) elif self.version == "1.0": label = np.array(h5py.File(label_path, "r")["S"], dtype=np.int64) label = label.transpose(1, 0) label -= 2 # unlabeled (1 -> -1) else: raise NotImplementedError( "1.0 or 1.1 expected, but got: {}".format(self.version) ) return image, label
Example #8
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 #9
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) size = image.shape name = osp.splitext(osp.basename(datafiles["img"]))[0] image = np.asarray(image, np.float32) image -= self.mean 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, name, size
Example #10
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) label = cv2.imread(datafiles["label"], cv2.IMREAD_GRAYSCALE) label = self.id2trainId(label) size = image.shape name = datafiles["name"] if self.scale: image, label = self.generate_scale_label(image, label) image = np.asarray(image, np.float32) image -= self.mean img_h, img_w = label.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: img_pad = cv2.copyMakeBorder(image, 0, pad_h, 0, pad_w, cv2.BORDER_CONSTANT, value=(0.0, 0.0, 0.0)) label_pad = cv2.copyMakeBorder(label, 0, pad_h, 0, pad_w, cv2.BORDER_CONSTANT, value=(self.ignore_label,)) else: img_pad, label_pad = image, label img_h, img_w = label_pad.shape h_off = random.randint(0, img_h - self.crop_h) w_off = random.randint(0, img_w - self.crop_w) # roi = cv2.Rect(w_off, h_off, self.crop_w, self.crop_h); image = np.asarray(img_pad[h_off : h_off+self.crop_h, w_off : w_off+self.crop_w], np.float32) label = np.asarray(label_pad[h_off : h_off+self.crop_h, w_off : w_off+self.crop_w], np.float32) #image = image[:, :, ::-1] # change to BGR image = image.transpose((2, 0, 1)) if self.is_mirror: flip = np.random.choice(2) * 2 - 1 image = image[:, :, ::flip] label = label[:, ::flip] return image.copy(), label.copy(), np.array(size), name
Example #11
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) size = image.shape name = osp.splitext(osp.basename(datafiles["img"]))[0] image = np.asarray(image, np.float32) image -= self.mean 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, name, size
Example #12
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) label = cv2.imread(datafiles["label"], cv2.IMREAD_GRAYSCALE) size = image.shape name = datafiles["name"] if self.scale: image, label = self.generate_scale_label(image, label) image = np.asarray(image, np.float32) image -= self.mean img_h, img_w = label.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: img_pad = cv2.copyMakeBorder(image, 0, pad_h, 0, pad_w, cv2.BORDER_CONSTANT, value=(0.0, 0.0, 0.0)) label_pad = cv2.copyMakeBorder(label, 0, pad_h, 0, pad_w, cv2.BORDER_CONSTANT, value=(self.ignore_label,)) else: img_pad, label_pad = image, label img_h, img_w = label_pad.shape h_off = random.randint(0, img_h - self.crop_h) w_off = random.randint(0, img_w - self.crop_w) # roi = cv2.Rect(w_off, h_off, self.crop_w, self.crop_h); image = np.asarray(img_pad[h_off : h_off+self.crop_h, w_off : w_off+self.crop_w], np.float32) label = np.asarray(label_pad[h_off : h_off+self.crop_h, w_off : w_off+self.crop_w], np.float32) #image = image[:, :, ::-1] # change to BGR image = image.transpose((2, 0, 1)) if self.is_mirror: flip = np.random.choice(2) * 2 - 1 image = image[:, :, ::flip] label = label[:, ::flip] return image.copy(), label.copy(), np.array(size), name
Example #13
Source File: main.py From ICDAR-2019-SROIE with MIT License | 6 votes |
def draw(): filenames = [os.path.splitext(f)[0] for f in glob.glob("for_task3/*.txt")] txt_files = [s + ".txt" for s in filenames] for txt in txt_files: image = cv2.imread('test_original/'+ txt.split('/')[1].split('.')[0]+'.jpg', cv2.IMREAD_COLOR) with open(txt, 'r') as txt_file: for line in csv.reader(txt_file): box = [int(string, 10) for string in line[0:8]] if len(line) < 9: print(txt) cv2.rectangle(image, (box[0], box[1]), (box[4], box[5]), (0,255,0), 2) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(image, line[8].upper(), (box[0],box[1]), font, 0.5, (0, 0, 255), 1, cv2.LINE_AA) cv2.imwrite('task2_result_draw/'+ txt.split('/')[1].split('.')[0]+'.jpg', image)
Example #14
Source File: device.py From fgo-bot with MIT License | 6 votes |
def capture(self, method=FROM_SHELL) -> Union[np.ndarray, None]: """ Capture the screen. :return: a cv2 image as numpy ndarray """ if method == self.FROM_SHELL: self.logger.debug('Capturing screen from shell...') img = self.__run_cmd(['shell', 'screencap -p'], raw=True) img = self.__png_sanitize(img) img = np.frombuffer(img, np.uint8) img = cv.imdecode(img, cv.IMREAD_COLOR) return img elif method == self.SDCARD_PULL: self.logger.debug('Capturing screen from sdcard pull...') self.__run_cmd(['shell', 'screencap -p /sdcard/sc.png']) self.__run_cmd(['pull', '/sdcard/sc.png', './sc.png']) img = cv.imread('./sc.png', cv.IMREAD_COLOR) return img else: self.logger.error('Unsupported screen capturing method.') return None
Example #15
Source File: opencv_adapter.py From gabriel with Apache License 2.0 | 6 votes |
def consumer(self, result_wrapper): if len(result_wrapper.results) != 1: logger.error('Got %d results from server', len(result_wrapper.results)) return result = result_wrapper.results[0] if result.payload_type != gabriel_pb2.PayloadType.IMAGE: type_name = gabriel_pb2.PayloadType.Name(result.payload_type) logger.error('Got result of type %s', type_name) return np_data = np.fromstring(result.payload, dtype=np.uint8) frame = cv2.imdecode(np_data, cv2.IMREAD_COLOR) self._consume_frame(frame, result_wrapper.extras)
Example #16
Source File: image.py From dataflow with Apache License 2.0 | 6 votes |
def __init__(self, files, channel=3, resize=None, shuffle=False): """ Args: files (list): list of file paths. channel (int): 1 or 3. Will convert grayscale to RGB images if channel==3. Will produce (h, w, 1) array if channel==1. resize (tuple): int or (h, w) tuple. If given, resize the image. """ assert len(files), "No image files given to ImageFromFile!" self.files = files self.channel = int(channel) assert self.channel in [1, 3], self.channel self.imread_mode = cv2.IMREAD_GRAYSCALE if self.channel == 1 else cv2.IMREAD_COLOR if resize is not None: resize = shape2d(resize) self.resize = resize self.shuffle = shuffle
Example #17
Source File: RtspClient.py From ReolinkCameraAPI with GNU General Public License v3.0 | 6 votes |
def get_frame(self) -> bytearray: try: self.sockt.send(str.encode(self.url)) data = b'' while True: try: r = self.sockt.recv(90456) if len(r) == 0: break a = r.find(b'END!') if a != -1: data += r[:a] break data += r except Exception as e: print(e) continue nparr = numpy.fromstring(data, numpy.uint8) frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR) return frame except Exception as e: print(e)
Example #18
Source File: coco.py From Parsing-R-CNN with MIT License | 6 votes |
def pull_image(self, index): """Returns the original image object at index in PIL form Note: not using self.__getitem__(), as any transformations passed in could mess up this functionality. Argument: index (int): index of img to show Return: img """ img_id = self.id_to_img_map[index] path = self.coco.loadImgs(img_id)[0]['file_name'] return cv2.imread(os.path.join(self.root, path), cv2.IMREAD_COLOR)
Example #19
Source File: voc.py From ssds.pytorch with MIT License | 6 votes |
def pull_img_anno(self, index): '''Returns the original annotation of image at index Note: not using self.__getitem__(), as any transformations passed in could mess up this functionality. Argument: index (int): index of img to get annotation of Return: list: [img_id, [(label, bbox coords),...]] eg: ('001718', [('dog', (96, 13, 438, 332))]) ''' img_id = self.ids[index] img = cv2.imread(self._imgpath % img_id, cv2.IMREAD_COLOR) anno = ET.parse(self._annopath % img_id).getroot() gt = self.target_transform(anno) height, width, _ = img.shape boxes = gt[:,:-1] labels = gt[:,-1] boxes[:, 0::2] /= width boxes[:, 1::2] /= height labels = np.expand_dims(labels,1) targets = np.hstack((boxes,labels)) return img, targets
Example #20
Source File: data_feeder.py From tf-lcnn with GNU General Public License v3.0 | 6 votes |
def get_data(self): idxs = np.arange(len(self.train_list)) if self.shuffle: self.rng.shuffle(idxs) caches = {} for i, k in enumerate(idxs): path = self.train_list[k] label = self.lb_list[k] if i % self.preload == 0: try: caches = ILSVRCTenth._read_tenth_batch(self.train_list[idxs[i:i+self.preload]]) except Exception as e: logging.warning('tenth local cache failed, err=%s' % str(e)) content = caches.get(path, '') if not content: content = ILSVRCTenth._read_tenth(path) img = cv2.imdecode(np.fromstring(content, dtype=np.uint8), cv2.IMREAD_COLOR) yield [img, label]
Example #21
Source File: voc.py From ssds.pytorch with MIT License | 6 votes |
def __getitem__(self, index): img_id = self.ids[index] target = ET.parse(self._annopath % img_id).getroot() img = cv2.imread(self._imgpath % img_id, cv2.IMREAD_COLOR) height, width, _ = img.shape if self.target_transform is not None: target = self.target_transform(target) if self.preproc is not None: img, target = self.preproc(img, target) #print(img.size()) # target = self.target_transform(target, width, height) #print(target.shape) return img, target
Example #22
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 #23
Source File: vocdataset.py From ASFF with GNU General Public License v3.0 | 6 votes |
def pull_item(self, index): '''Returns the original image and target at an index for mixup Note: not using self.__getitem__(), as any transformations passed in could mess up this functionality. Argument: index (int): index of img to show Return: img, target ''' img_id = self.ids[index] target = ET.parse(self._annopath % img_id).getroot() img = cv2.imread(self._imgpath % img_id, cv2.IMREAD_COLOR) height, width, _ = img.shape img_info = (width, height) if self.target_transform is not None: target = self.target_transform(target) return img, target, img_info, img_id
Example #24
Source File: vocdataset.py From ASFF with GNU General Public License v3.0 | 6 votes |
def __getitem__(self, index): img_id = self.ids[index] target = ET.parse(self._annopath % img_id).getroot() img = cv2.imread(self._imgpath % img_id, cv2.IMREAD_COLOR) #img = Image.open(self._imgpath % img_id).convert('RGB') height, width, _ = img.shape if self.target_transform is not None: target = self.target_transform(target) if self.preproc is not None: img, target = self.preproc(img, target, self.input_dim) #print(img.size()) img_info = (width, height) return img, target, img_info, img_id
Example #25
Source File: benchmark-dataflow.py From benchmarks with The Unlicense | 6 votes |
def test_lmdb_inference(db, augs, batch): ds = LMDBData(db, shuffle=False) # ds = LocallyShuffleData(ds, 50000) augs = AugmentorList(augs) def mapper(data): im, label = loads(data[1]) im = cv2.imdecode(im, cv2.IMREAD_COLOR) im = augs.augment(im) return im, label ds = MultiProcessMapData(ds, 40, mapper, buffer_size=200) # ds = MultiThreadMapData(ds, 40, mapper, buffer_size=2000) ds = BatchData(ds, batch) ds = MultiProcessRunnerZMQ(ds, 1) return ds
Example #26
Source File: cocostuff.py From SPNet with MIT License | 5 votes |
def _load_data(self, image_id): # Set paths image_path = osp.join(self.root, "images", image_id[0], image_id[1] + ".jpg") label_path = osp.join(self.root, "annotations", image_id[0], image_id[1] + ".png") # Load an image #print(image_path) image = cv2.imread(image_path, cv2.IMREAD_COLOR).astype(np.float32) label = np.array(Image.open(label_path)).astype(np.int64) return image, label
Example #27
Source File: create_dataset.py From pytorch-0.4-yolov3 with MIT License | 5 votes |
def checkImageIsValid(imageBin): if imageBin is None: return False imageBuf = np.fromstring(imageBin, dtype=np.uint8) img = cv2.imdecode(imageBuf, cv2.IMREAD_COLOR) imgH, imgW = img.shape[0], img.shape[1] if imgH * imgW == 0: return False return True
Example #28
Source File: test_matting.py From closed-form-matting with MIT License | 5 votes |
def test_matting_with_trimap(self): image = cv2.imread('testdata/source.png', cv2.IMREAD_COLOR) / 255.0 trimap = cv2.imread('testdata/trimap.png', cv2.IMREAD_GRAYSCALE) / 255.0 alpha = closed_form_matting.closed_form_matting_with_trimap(image, trimap) reference_alpha = cv2.imread('testdata/output_alpha.png', cv2.IMREAD_GRAYSCALE) / 255.0 sad_alpha = np.mean(np.abs(alpha - reference_alpha)) self.assertLess(sad_alpha, 1e-3)
Example #29
Source File: write_tfrecord.py From 2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement with MIT License | 5 votes |
def _write_tfrecords(tfrecords_writer): while True: sample_info = _SAMPLE_INFO_QUEUE.get() if sample_info == _SENTINEL: print('Process {:d} finished writing work'.format(os.getpid())) tfrecords_writer.close() break sample_path = sample_info[0] sample_label = sample_info[1] if _is_valid_jpg_file(sample_path): print('Image file: {:d} is not a valid jpg file'.format(sample_path)) continue try: image = cv2.imread(sample_path, cv2.IMREAD_COLOR) if image is None: continue image = _resize_image(image) image = image.tostring() except IOError as err: print(err) continue sample_path = sample_path if sys.version_info[0] < 3 else sample_path.encode('utf-8') features = tf.train.Features(feature={ 'labels': _int64_feature(sample_label), 'images': _bytes_feature(image), 'imagepaths': _bytes_feature(sample_path) }) tf_example = tf.train.Example(features=features) tfrecords_writer.write(tf_example.SerializeToString()) #print('Process: {:d} get sample from sample_info_queue[current_size={:d}], ' # 'and write it to local file at time: {}'.format( # os.getpid(), _SAMPLE_INFO_QUEUE.qsize(), time.strftime('%H:%M:%S')))
Example #30
Source File: closed_form_matting.py From closed-form-matting with MIT License | 5 votes |
def main(): import argparse logging.basicConfig(level=logging.INFO) arg_parser = argparse.ArgumentParser(description=__doc__) arg_parser.add_argument('image', type=str, help='input image') arg_parser.add_argument('-t', '--trimap', type=str, help='input trimap') arg_parser.add_argument('-s', '--scribbles', type=str, help='input scribbles') arg_parser.add_argument('-o', '--output', type=str, required=True, help='output image') arg_parser.add_argument( '--solve-fg', dest='solve_fg', action='store_true', help='compute foreground color and output RGBA image' ) args = arg_parser.parse_args() image = cv2.imread(args.image, cv2.IMREAD_COLOR) / 255.0 if args.scribbles: scribbles = cv2.imread(args.scribbles, cv2.IMREAD_COLOR) / 255.0 alpha = closed_form_matting_with_scribbles(image, scribbles) elif args.trimap: trimap = cv2.imread(args.trimap, cv2.IMREAD_GRAYSCALE) / 255.0 alpha = closed_form_matting_with_trimap(image, trimap) else: logging.error('Either trimap or scribbles must be specified.') arg_parser.print_help() exit(-1) if args.solve_fg: from solve_foreground_background import solve_foreground_background foreground, _ = solve_foreground_background(image, alpha) output = np.concatenate((foreground, alpha[:, :, np.newaxis]), axis=2) else: output = alpha cv2.imwrite(args.output, output * 255.0)