Python cv2.INTER_CUBIC Examples
The following are 30
code examples of cv2.INTER_CUBIC().
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: measure_map.py From FasterRCNN_KERAS with Apache License 2.0 | 7 votes |
def format_img(img, C): img_min_side = float(C.im_size) (height,width,_) = img.shape if width <= height: f = img_min_side/width new_height = int(f * height) new_width = int(img_min_side) else: f = img_min_side/height new_width = int(f * width) new_height = int(img_min_side) fx = width/float(new_width) fy = height/float(new_height) img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_CUBIC) img = img[:, :, (2, 1, 0)] img = img.astype(np.float32) img[:, :, 0] -= C.img_channel_mean[0] img[:, :, 1] -= C.img_channel_mean[1] img[:, :, 2] -= C.img_channel_mean[2] img /= C.img_scaling_factor img = np.transpose(img, (2, 0, 1)) img = np.expand_dims(img, axis=0) return img, fx, fy
Example #2
Source File: resize.py From chainer-compiler with MIT License | 7 votes |
def _resize_cv2(img, size, interpolation): img = img.transpose((1, 2, 0)) if interpolation == PIL.Image.NEAREST: cv_interpolation = cv2.INTER_NEAREST elif interpolation == PIL.Image.BILINEAR: cv_interpolation = cv2.INTER_LINEAR elif interpolation == PIL.Image.BICUBIC: cv_interpolation = cv2.INTER_CUBIC elif interpolation == PIL.Image.LANCZOS: cv_interpolation = cv2.INTER_LANCZOS4 H, W = size img = cv2.resize(img, dsize=(W, H), interpolation=cv_interpolation) # If input is a grayscale image, cv2 returns a two-dimentional array. if len(img.shape) == 2: img = img[:, :, np.newaxis] return img.transpose((2, 0, 1))
Example #3
Source File: train_yadav.py From robust_physical_perturbations with MIT License | 6 votes |
def transform_image(image,ang_range,shear_range,trans_range): # Rotation ang_rot = np.random.uniform(ang_range)-ang_range/2 rows,cols,ch = image.shape Rot_M = cv2.getRotationMatrix2D((cols/2,rows/2),ang_rot,1) # Translation tr_x = trans_range*np.random.uniform()-trans_range/2 tr_y = trans_range*np.random.uniform()-trans_range/2 Trans_M = np.float32([[1,0,tr_x],[0,1,tr_y]]) # Shear pts1 = np.float32([[5,5],[20,5],[5,20]]) pt1 = 5+shear_range*np.random.uniform()-shear_range/2 pt2 = 20+shear_range*np.random.uniform()-shear_range/2 pts2 = np.float32([[pt1,5],[pt2,pt1],[5,pt2]]) shear_M = cv2.getAffineTransform(pts1,pts2) image = cv2.warpAffine(image,Rot_M,(cols,rows)) image = cv2.warpAffine(image,Trans_M,(cols,rows)) image = cv2.warpAffine(image,shear_M,(cols,rows)) image = pre_process_image(image.astype(np.uint8)) #image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV) #image = image[:,:,0] #image = cv2.resize(image, (img_resize,img_resize),interpolation = cv2.INTER_CUBIC) return image
Example #4
Source File: imagenet_utils.py From ghostnet with Apache License 2.0 | 6 votes |
def _augment(self, img, _): h, w = img.shape[:2] area = h * w for _ in range(10): targetArea = self.rng.uniform(self.crop_area_fraction, 1.0) * area aspectR = self.rng.uniform(self.aspect_ratio_low, self.aspect_ratio_high) ww = int(np.sqrt(targetArea * aspectR) + 0.5) hh = int(np.sqrt(targetArea / aspectR) + 0.5) if self.rng.uniform() < 0.5: ww, hh = hh, ww if hh <= h and ww <= w: x1 = 0 if w == ww else self.rng.randint(0, w - ww) y1 = 0 if h == hh else self.rng.randint(0, h - hh) out = img[y1:y1 + hh, x1:x1 + ww] out = cv2.resize(out, (self.target_shape, self.target_shape), interpolation=cv2.INTER_CUBIC) return out out = imgaug.ResizeShortestEdge(self.target_shape, interp=cv2.INTER_CUBIC).augment(img) out = imgaug.CenterCrop(self.target_shape).augment(out) return out
Example #5
Source File: main.py From ghostnet with Apache License 2.0 | 6 votes |
def get_data(name, batch): isTrain = name == 'train' image_shape = 224 if isTrain: augmentors = [ # use lighter augs if model is too small GoogleNetResize(crop_area_fraction=0.49 if args.width_ratio < 1 else 0.08, target_shape=image_shape), imgaug.RandomOrderAug( [imgaug.BrightnessScale((0.6, 1.4), clip=False), imgaug.Contrast((0.6, 1.4), clip=False), imgaug.Saturation(0.4, rgb=False), ]), imgaug.Flip(horiz=True), ] else: augmentors = [ imgaug.ResizeShortestEdge(int(image_shape*256/224), cv2.INTER_CUBIC), imgaug.CenterCrop((image_shape, image_shape)), ] return get_imagenet_dataflow(args.data_dir, name, batch, augmentors, meta_dir = args.meta_dir)
Example #6
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 #7
Source File: Dataset.py From 3D-BoundingBox with MIT License | 6 votes |
def format_img(self, img, box_2d): # Should this happen? or does normalize take care of it. YOLO doesnt like # img=img.astype(np.float) / 255 # torch transforms normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) process = transforms.Compose ([ transforms.ToTensor(), normalize ]) # crop image pt1 = box_2d[0] pt2 = box_2d[1] crop = img[pt1[1]:pt2[1]+1, pt1[0]:pt2[0]+1] crop = cv2.resize(src = crop, dsize=(224, 224), interpolation=cv2.INTER_CUBIC) # recolor, reformat batch = process(crop) return batch
Example #8
Source File: util.py From Qualia2.0 with MIT License | 6 votes |
def decode_pose(img_orig, heatmaps, pafs): param = {'thre1': 0.1, 'thre2': 0.05, 'thre3': 0.5} # Bottom-up approach: # Step 1: find all joints in the image (organized by joint type: [0]=nose, [1]=neck...) joint_list_per_joint_type = NMS(param, heatmaps, img_orig.shape[0] / float(heatmaps.shape[0])) # joint_list is an unravel'd version of joint_list_per_joint, where we add # a 5th column to indicate the joint_type (0=nose, 1=neck...) joint_list = np.array([tuple(peak) + (joint_type,) for joint_type, joint_peaks in enumerate(joint_list_per_joint_type) for peak in joint_peaks]) # Step 2: find which joints go together to form limbs (which wrists go with which elbows) paf_upsamp = cv2.resize(pafs, (img_orig.shape[1], img_orig.shape[0]), interpolation=cv2.INTER_CUBIC) connected_limbs = find_connected_joints(param, paf_upsamp, joint_list_per_joint_type) # Step 3: associate limbs that belong to the same person person_to_joint_assoc = group_limbs_of_same_person(connected_limbs, joint_list) # (Step 4): plot results to_plot, canvas = plot_pose(img_orig, joint_list, person_to_joint_assoc) return to_plot, canvas, joint_list, person_to_joint_assoc
Example #9
Source File: reader.py From Baidu_Lane_Segmentation with MIT License | 6 votes |
def get_img(self): while True: img_name = self.image_files[self.index] label_name = img_name.replace('.jpg', '.png') img = cv2.imread(img_name) if img is None: print("load img failed:", img_name) self.next_img() else: break if self.birdeye == True: warped_img = cv2.warpPerspective(img, self.M, (4000, 4000),flags=cv2.INTER_CUBIC) img = cv2.resize(warped_img, (self.cols, self.rows), interpolation=cv2.INTER_CUBIC) else: img = cv2.resize(img, (self.cols, self.rows), interpolation=cv2.INTER_CUBIC) img = img.transpose((2,0,1)) return img, label_name
Example #10
Source File: gui_vis.py From iGAN with MIT License | 6 votes |
def update_vis(self): ims = self.opt_engine.get_images(self.frame_id) if ims is not None: self.ims = ims if self.ims is None: return ims_show = [] n_imgs = self.ims.shape[0] for n in range(n_imgs): # im = ims[n] im_s = cv2.resize(self.ims[n], (self.width, self.width), interpolation=cv2.INTER_CUBIC) if n == self.select_id and self.topK > 1: t = 3 # thickness cv2.rectangle(im_s, (t, t), (self.width - t, self.width - t), (0, 255, 0), t) im_s = im_s[np.newaxis, ...] ims_show.append(im_s) if ims_show: ims_show = np.concatenate(ims_show, axis=0) g_tmp = utils.grid_vis(ims_show, self.grid_size[1], self.grid_size[0]) # (nh, nw) self.vis_results = g_tmp.copy() self.update()
Example #11
Source File: custom_transforms.py From MaskTrack with MIT License | 6 votes |
def __call__(self, sample): # Fixed range of scales sc = self.scales[random.randint(0, len(self.scales) - 1)] for elem in sample.keys(): if 'fname' in elem: continue tmp = sample[elem] if tmp.ndim == 2: flagval = cv2.INTER_NEAREST else: flagval = cv2.INTER_CUBIC tmp = cv2.resize(tmp, None, fx=sc, fy=sc, interpolation=flagval) sample[elem] = tmp return sample
Example #12
Source File: test_frcnn.py From FasterRCNN_KERAS with Apache License 2.0 | 6 votes |
def format_img(img, C): img_min_side = float(C.im_size) (height,width,_) = img.shape if width <= height: f = img_min_side/width new_height = int(f * height) new_width = int(img_min_side) else: f = img_min_side/height new_width = int(f * width) new_height = int(img_min_side) img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_CUBIC) img = img[:, :, (2, 1, 0)] img = img.astype(np.float32) img[:, :, 0] -= C.img_channel_mean[0] img[:, :, 1] -= C.img_channel_mean[1] img[:, :, 2] -= C.img_channel_mean[2] img /= C.img_scaling_factor img = np.transpose(img, (2, 0, 1)) img = np.expand_dims(img, axis=0) return img
Example #13
Source File: write_tfrecord.py From 2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement with MIT License | 6 votes |
def _resize_image(img): dst_width = CFG.ARCH.INPUT_SIZE[0] dst_height = CFG.ARCH.INPUT_SIZE[1] h_old, w_old, _ = img.shape height = dst_height width = int(w_old * height / h_old) if width < dst_width: left_padding = int((dst_width - width)/2) right_padding = dst_width - width - left_padding resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_CUBIC) resized_img = cv2.copyMakeBorder(resized_img, 0, 0, left_padding, right_padding, cv2.BORDER_CONSTANT, value=[255, 255, 255]) else: resized_img = cv2.resize(img, (dst_width, height), interpolation=cv2.INTER_CUBIC) return resized_img
Example #14
Source File: img_utils.py From tools_python with Apache License 2.0 | 6 votes |
def one_pic_to_video(image_path, output_video_path, fps, time): """ 一张图片合成视频 one_pic_to_video('./../source/1.jpeg', './../source/output.mp4', 25, 10) :param path: 图片文件路径 :param output_video_path:合成视频的路径 :param fps:帧率 :param time:时长 :return: """ image_clip = ImageClip(image_path) img_width, img_height = image_clip.w, image_clip.h # 总共的帧数 frame_num = (int)(fps * time) img_size = (int(img_width), int(img_height)) fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') video = cv2.VideoWriter(output_video_path, fourcc, fps, img_size) for index in range(frame_num): frame = cv2.imread(image_path) # 直接缩放到指定大小 frame_suitable = cv2.resize(frame, (img_size[0], img_size[1]), interpolation=cv2.INTER_CUBIC) # 把图片写进视频 # 重复写入多少次 video.write(frame_suitable) # 释放资源 video.release() return VideoFileClip(output_video_path)
Example #15
Source File: helpers.py From DEXTR-KerasTensorflow with GNU General Public License v3.0 | 6 votes |
def fixed_resize(sample, resolution, flagval=None): if flagval is None: if ((sample == 0) | (sample == 1)).all(): flagval = cv2.INTER_NEAREST else: flagval = cv2.INTER_CUBIC if isinstance(resolution, int): tmp = [resolution, resolution] tmp[np.argmax(sample.shape[:2])] = int(round(float(resolution)/np.min(sample.shape[:2])*np.max(sample.shape[:2]))) resolution = tuple(tmp) if sample.ndim == 2 or (sample.ndim == 3 and sample.shape[2] == 3): sample = cv2.resize(sample, resolution[::-1], interpolation=flagval) else: tmp = sample sample = np.zeros(np.append(resolution, tmp.shape[2]), dtype=np.float32) for ii in range(sample.shape[2]): sample[:, :, ii] = cv2.resize(tmp[:, :, ii], resolution[::-1], interpolation=flagval) return sample
Example #16
Source File: data_feeder.py From tf-lcnn with GNU General Public License v3.0 | 6 votes |
def get_mnist_data(is_train, image_size, batchsize): ds = MNISTCh('train' if is_train else 'test', shuffle=True) if is_train: augs = [ imgaug.RandomApplyAug(imgaug.RandomResize((0.8, 1.2), (0.8, 1.2)), 0.3), imgaug.RandomApplyAug(imgaug.RotationAndCropValid(15), 0.5), imgaug.RandomApplyAug(imgaug.SaltPepperNoise(white_prob=0.01, black_prob=0.01), 0.25), imgaug.Resize((224, 224), cv2.INTER_AREA) ] ds = AugmentImageComponent(ds, augs) ds = PrefetchData(ds, 128*10, multiprocessing.cpu_count()) ds = BatchData(ds, batchsize) ds = PrefetchData(ds, 256, 4) else: # no augmentation, only resizing augs = [ imgaug.Resize((image_size, image_size), cv2.INTER_CUBIC), ] ds = AugmentImageComponent(ds, augs) ds = BatchData(ds, batchsize) ds = PrefetchData(ds, 20, 2) return ds
Example #17
Source File: video_transforms.py From deep-smoke-machine with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, degrees, translate=None, scale=None, shear=None, interpolation=cv2.INTER_CUBIC, fillcolor=0): if isinstance(degrees, numbers.Number): if degrees < 0: raise ValueError("If degrees is a single number, it must be positive.") self.degrees = (-degrees, degrees) else: assert isinstance(degrees, (tuple, list)) and len(degrees) == 2, \ "degrees should be a list or tuple and it must be of length 2." self.degrees = degrees if translate is not None: assert isinstance(translate, (tuple, list)) and len(translate) == 2, \ "translate should be a list or tuple and it must be of length 2." for t in translate: if not (0.0 <= t <= 1.0): raise ValueError("translation values should be between 0 and 1") self.translate = translate if scale is not None: assert isinstance(scale, (tuple, list)) and len(scale) == 2, \ "scale should be a list or tuple and it must be of length 2." for s in scale: if s <= 0: raise ValueError("scale values should be positive") self.scale = scale if shear is not None: if isinstance(shear, numbers.Number): if shear < 0: raise ValueError("If shear is a single number, it must be positive.") self.shear = (-shear, shear) else: assert isinstance(shear, (tuple, list)) and len(shear) == 2, \ "shear should be a list or tuple and it must be of length 2." self.shear = shear else: self.shear = shear # self.resample = resample self.interpolation = interpolation self.fillcolor = fillcolor
Example #18
Source File: sim.py From findit with MIT License | 5 votes |
def execute( self, template_object: np.ndarray, target_object: np.ndarray, *_, **__ ) -> FindItEngineResponse: resp = FindItEngineResponse() resized_target = cv2.resize( target_object, template_object.shape[::-1], interpolation=cv2.INTER_CUBIC ) ssim = compare_ssim(resized_target, template_object) resp.append("conf", self.__dict__) resp.append("ssim", ssim, important=True) resp.append("ok", True, important=True) return resp
Example #19
Source File: rotate.py From chainer-compiler with MIT License | 5 votes |
def _rotate_cv2(img, angle, expand, fill, interpolation): if interpolation == PIL.Image.NEAREST: cv_interpolation = cv2.INTER_NEAREST elif interpolation == PIL.Image.BILINEAR: cv_interpolation = cv2.INTER_LINEAR elif interpolation == PIL.Image.BICUBIC: cv_interpolation = cv2.INTER_CUBIC _, H, W = img.shape affine_mat = cv2.getRotationMatrix2D((W / 2, H / 2), angle, 1) # Logic borrowed from Pillow if expand: # calculate output size yy = [] xx = [] for y, x in ((0, 0), (H, 0), (H, W), (0, W)): yy.append( affine_mat[1, 0] * x + affine_mat[1, 1] * y + affine_mat[1, 2]) xx.append( affine_mat[0, 0] * x + affine_mat[0, 1] * y + affine_mat[0, 2]) out_H = int(np.ceil(max(yy)) - np.floor(min(yy))) out_W = int(np.ceil(max(xx)) - np.floor(min(xx))) affine_mat[1][2] += out_H / 2 - H / 2 affine_mat[0][2] += out_W / 2 - W / 2 else: out_H = H out_W = W img = img.transpose((1, 2, 0)) img = cv2.warpAffine( img, affine_mat, (out_W, out_H), flags=cv_interpolation, borderValue=fill) if img.ndim == 2: img = img[:, :, None] img = img.transpose((2, 0, 1)) return img
Example #20
Source File: deconvolution.py From OpenCV-Python-Tutorial with MIT License | 5 votes |
def motion_kernel(angle, d, sz=65): kern = np.ones((1, d), np.float32) c, s = np.cos(angle), np.sin(angle) A = np.float32([[c, -s, 0], [s, c, 0]]) sz2 = sz // 2 A[:,2] = (sz2, sz2) - np.dot(A[:,:2], ((d-1)*0.5, 0)) kern = cv2.warpAffine(kern, A, (sz, sz), flags=cv2.INTER_CUBIC) return kern
Example #21
Source File: object_detection_2d_geometric_ops.py From data_generator_object_detection_2d with GNU General Public License v3.0 | 5 votes |
def __init__(self, height, width, interpolation_modes=[cv2.INTER_NEAREST, cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_AREA, cv2.INTER_LANCZOS4], box_filter=None, labels_format={'class_id': 0, 'xmin': 1, 'ymin': 2, 'xmax': 3, 'ymax': 4}): ''' Arguments: height (int): The desired height of the output image in pixels. width (int): The desired width of the output image in pixels. interpolation_modes (list/tuple, optional): A list/tuple of integers that represent valid OpenCV interpolation modes. For example, integers 0 through 5 are valid interpolation modes. box_filter (BoxFilter, optional): Only relevant if ground truth bounding boxes are given. A `BoxFilter` object to filter out bounding boxes that don't meet the given criteria after the transformation. Refer to the `BoxFilter` documentation for details. If `None`, the validity of the bounding boxes is not checked. labels_format (dict, optional): A dictionary that defines which index in the last axis of the labels of an image contains which bounding box coordinate. The dictionary maps at least the keywords 'xmin', 'ymin', 'xmax', and 'ymax' to their respective indices within last axis of the labels array. ''' if not (isinstance(interpolation_modes, (list, tuple))): raise ValueError("`interpolation_mode` must be a list or tuple.") self.height = height self.width = width self.interpolation_modes = interpolation_modes self.box_filter = box_filter self.labels_format = labels_format self.resize = Resize(height=self.height, width=self.width, box_filter=self.box_filter, labels_format=self.labels_format)
Example #22
Source File: cut_part.py From 2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement with MIT License | 5 votes |
def find_bbox(img, img_closed): # 寻找身份证正反面区域 """ 根据二值化结果判定并裁剪出身份证正反面区域 :param img: 原始RGB图片 :param img_closed: 二值化后的图片 :return: 身份证正反面区域 """ (contours, _) = cv2.findContours(img_closed.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) # 求出框的个数 # 这里opencv如果版本不对(4.0或以上)会报错,只需把(contours, _)改成 (_, contours, _) contours = sorted(contours, key=cv2.contourArea, reverse=True) # 按照面积大小排序 countours_res = [] for i in range(0, len(contours)): area = cv2.contourArea(contours[i]) # 计算面积 if (area <= 0.4 * img.shape[0] * img.shape[1]) and (area >= 0.05 * img.shape[0] * img.shape[1]): # 人为设定,身份证正反面框的大小不会超过整张图片大小的0.4,不会小于0.05(这个参数随便设置的) rect = cv2.minAreaRect(contours[i]) # 最小外接矩,返回值有中心点坐标,矩形宽高,倾斜角度三个参数 box = cv2.boxPoints(rect) left_down, right_down, left_up, right_up = point_judge([int(rect[0][0]), int(rect[0][1])], box) src = np.float32([left_down, right_down, left_up, right_up]) # 这里注意必须对应 dst = np.float32([[0, 0], [int(max(rect[1][0], rect[1][1])), 0], [0, int(min(rect[1][0], rect[1][1]))], [int(max(rect[1][0], rect[1][1])), int(min(rect[1][0], rect[1][1]))]]) # rect中的宽高不清楚是个怎么机制,但是对于身份证,肯定是宽大于高,因此加个判定 m = cv2.getPerspectiveTransform(src, dst) # 得到投影变换矩阵 result = cv2.warpPerspective(img, m, (int(max(rect[1][0], rect[1][1])), int(min(rect[1][0], rect[1][1]))), flags=cv2.INTER_CUBIC) # 投影变换 countours_res.append(result) return countours_res # 返回身份证区域
Example #23
Source File: preprocess.py From tensornets with MIT License | 5 votes |
def darknet_preprocess(x, target_size=None): # Refer to the following darkflow # https://github.com/thtrieu/darkflow/blob/master/darkflow/net/yolo/predict.py if target_size is None or target_size[0] is None or target_size[1] is None: y = x.copy() else: h, w = target_size assert cv2 is not None, 'resizing requires `cv2`.' y = np.zeros((len(x), h, w, x.shape[3])) for i in range(len(x)): y[i] = cv2.resize(x[i], (w, h), interpolation=cv2.INTER_CUBIC) y = y[:, :, :, ::-1] y /= 255. return y
Example #24
Source File: image_augmentation.py From df with Mozilla Public License 2.0 | 5 votes |
def random_warp( in_image ): assert in_image.shape[:2] == (256,256) image = in_image.copy() scale = 5 range_ = numpy.linspace( 128-120, 128+120, scale ) mapx = numpy.broadcast_to( range_, (scale,scale) ) mapy = mapx.T mapx = mapx + numpy.random.normal( size=(scale,scale), scale= 6 ) mapy = mapy + numpy.random.normal( size=(scale,scale), scale= 6 ) interp_mapx = cv2.resize( mapx, (80,80) )[8:72,8:72].astype('float32') interp_mapy = cv2.resize( mapy, (80,80) )[8:72,8:72].astype('float32') warped_image = cv2.remap( image[:,:,:3], interp_mapx, interp_mapy, cv2.INTER_CUBIC ) src_points = numpy.stack( [ mapx.ravel(), mapy.ravel() ], axis=-1 ) dst_points = numpy.mgrid[0:65:16,0:65:16].T.reshape(-1,2) mat = umeyama( src_points, dst_points, True )[0:2] target_image = cv2.warpAffine( image, mat, (64,64) ) target_mask = target_image[:,:,3].reshape((64,64,1)) target_image = target_image[:,:,:3] if len(target_image.shape)>2: return ( warped_image, target_image, target_mask ) else: return ( warped_image, target_image )
Example #25
Source File: utils.py From tensornets with MIT License | 5 votes |
def load_img(paths, grayscale=False, target_size=None, crop_size=None, interp=None): assert cv2 is not None, '`load_img` requires `cv2`.' if interp is None: interp = cv2.INTER_CUBIC if not isinstance(paths, list): paths = [paths] if len(paths) > 1 and (target_size is None or isinstance(target_size, int)): raise ValueError('A tuple `target_size` should be provided ' 'when loading multiple images.') def _load_img(path): img = cv2.imread(path) if target_size: if isinstance(target_size, int): hw_tuple = tuple([x * target_size // min(img.shape[:2]) for x in img.shape[1::-1]]) else: hw_tuple = (target_size[1], target_size[0]) if img.shape[1::-1] != hw_tuple: img = cv2.resize(img, hw_tuple, interpolation=interp) img = img[:, :, ::-1] if len(img.shape) == 2: img = np.expand_dims(img, -1) return img if len(paths) > 1: imgs = np.zeros((len(paths),) + target_size + (3,), dtype=np.float32) for (i, path) in enumerate(paths): imgs[i] = _load_img(path) else: imgs = np.array([_load_img(paths[0])], dtype=np.float32) if crop_size is not None: imgs = crop(imgs, crop_size) return imgs
Example #26
Source File: video_transforms.py From deep-smoke-machine with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, size, interpolation=cv2.INTER_CUBIC): assert isinstance(size, int) or (isinstance(size, collections.Iterable) and len(size) == 2) self.size = size self.interpolation = interpolation
Example #27
Source File: video_transforms.py From deep-smoke-machine with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, size, scale=(0.08, 1.0), ratio=(3. / 4., 4. / 3.), interpolation=cv2.INTER_CUBIC): self.size = (size, size) self.interpolation = interpolation self.scale = scale self.ratio = ratio
Example #28
Source File: opencv_functional.py From deep-smoke-machine with BSD 3-Clause "New" or "Revised" License | 5 votes |
def affine(img, angle, translate, scale, shear, interpolation=cv2.INTER_LINEAR, mode=cv2.BORDER_CONSTANT, fillcolor=0): """Apply affine transformation on the image keeping image center invariant Args: img (numpy ndarray): numpy ndarray to be transformed. angle (float or int): rotation angle in degrees between -180 and 180, clockwise direction. translate (list or tuple of integers): horizontal and vertical translations (post-rotation translation) scale (float): overall scale shear (float): shear angle value in degrees between -180 to 180, clockwise direction. interpolation (``cv2.INTER_NEAREST` or ``cv2.INTER_LINEAR`` or ``cv2.INTER_AREA``, ``cv2.INTER_CUBIC``): An optional resampling filter. See `filters`_ for more information. If omitted, it is set to ``cv2.INTER_LINEAR``, for bilinear interpolation. mode (``cv2.BORDER_CONSTANT`` or ``cv2.BORDER_REPLICATE`` or ``cv2.BORDER_REFLECT`` or ``cv2.BORDER_REFLECT_101``) Method for filling in border regions. Defaults to cv2.BORDER_CONSTANT, meaning areas outside the image are filled with a value (val, default 0) val (int): Optional fill color for the area outside the transform in the output image. Default: 0 """ if not _is_numpy_image(img): raise TypeError('img should be numpy Image. Got {}'.format(type(img))) assert isinstance(translate, (tuple, list)) and len(translate) == 2, \ "Argument translate should be a list or tuple of length 2" assert scale > 0.0, "Argument scale should be positive" output_size = img.shape[0:2] center = (img.shape[1] * 0.5 + 0.5, img.shape[0] * 0.5 + 0.5) matrix = _get_affine_matrix(center, angle, translate, scale, shear) if img.shape[2]==1: return cv2.warpAffine(img, matrix, output_size[::-1],interpolation, borderMode=mode, borderValue=fillcolor)[:,:,np.newaxis] else: return cv2.warpAffine(img, matrix, output_size[::-1],interpolation, borderMode=mode, borderValue=fillcolor)
Example #29
Source File: gui_draw.py From interactive-deep-colorization with MIT License | 5 votes |
def compute_result(self): im, mask = self.uiControl.get_input() im_mask0 = mask > 0.0 self.im_mask0 = im_mask0.transpose((2, 0, 1)) im_lab = color.rgb2lab(im).transpose((2, 0, 1)) self.im_ab0 = im_lab[1:3, :, :] self.model.net_forward(self.im_ab0, self.im_mask0) ab = self.model.output_ab.transpose((1, 2, 0)) ab_win = cv2.resize(ab, (self.win_w, self.win_h), interpolation=cv2.INTER_CUBIC) pred_lab = np.concatenate((self.l_win[..., np.newaxis], ab_win), axis=2) pred_rgb = (np.clip(color.lab2rgb(pred_lab), 0, 1) * 255).astype('uint8') self.result = pred_rgb self.emit(SIGNAL('update_result'), self.result) self.update()
Example #30
Source File: data_feeder.py From tf-lcnn with GNU General Public License v3.0 | 5 votes |
def get_ilsvrc_data_alexnet(is_train, image_size, batchsize, directory): if is_train: if not directory.startswith('/'): ds = ILSVRCTTenthTrain(directory) else: ds = ILSVRC12(directory, 'train') augs = [ imgaug.RandomApplyAug(imgaug.RandomResize((0.9, 1.2), (0.9, 1.2)), 0.7), imgaug.RandomApplyAug(imgaug.RotationAndCropValid(15), 0.7), imgaug.RandomApplyAug(imgaug.RandomChooseAug([ imgaug.SaltPepperNoise(white_prob=0.01, black_prob=0.01), imgaug.RandomOrderAug([ imgaug.BrightnessScale((0.8, 1.2), clip=False), imgaug.Contrast((0.8, 1.2), clip=False), # imgaug.Saturation(0.4, rgb=True), ]), ]), 0.7), imgaug.Flip(horiz=True), imgaug.ResizeShortestEdge(256, cv2.INTER_CUBIC), imgaug.RandomCrop((224, 224)), ] ds = AugmentImageComponent(ds, augs) ds = PrefetchData(ds, 1000, multiprocessing.cpu_count()) ds = BatchData(ds, batchsize) ds = PrefetchData(ds, 10, 4) else: if not directory.startswith('/'): ds = ILSVRCTenthValid(directory) else: ds = ILSVRC12(directory, 'val') ds = AugmentImageComponent(ds, [ imgaug.ResizeShortestEdge(224, cv2.INTER_CUBIC), imgaug.CenterCrop((224, 224)), ]) ds = PrefetchData(ds, 100, multiprocessing.cpu_count()) ds = BatchData(ds, batchsize) return ds