| | import os, subprocess |
| | import numpy as np |
| | from matplotlib import pyplot as plt |
| | import torch |
| | import cv2 |
| |
|
| |
|
| | def ensure_dir(path): |
| | if not os.path.exists(path): |
| | os.makedirs(path) |
| |
|
| |
|
| | def imagesc(nd_array): |
| | plt.figure(figsize=(10, 10)) |
| | plt.imshow(nd_array) |
| | plt.colorbar() |
| | plt.show() |
| |
|
| |
|
| | def imread(img): |
| | |
| | try: |
| | im = cv2.imread(img) |
| | except Exception as e: |
| | print(e) |
| | return None |
| | im = im[..., ::-1] / 255. |
| | return im |
| |
|
| |
|
| | def imwrite(img, name): |
| | |
| | cv2.imwrite(name, img[..., ::-1] * 255.) |
| |
|
| |
|
| | def stereoRead(img: str): |
| | im = imread(img) |
| | H, W, _ = im.shape |
| | assert W % 2 == 0, '%s is not a side-by-side stereo image' % img |
| | left = im[:, :W // 2, ...] |
| | right = im[:, W // 2:, ...] |
| | return left, right |
| |
|
| |
|
| | def stereoWright(left: np.ndarray, right: np.ndarray, name: str): |
| | im = np.concatenate((left, right), axis=1) |
| | imwrite(im, name) |
| |
|
| |
|
| | def exeCmd(cmd=None): |
| | print(cmd) |
| | return subprocess.check_call(cmd, shell=True) |
| |
|
| |
|
| | def img2tensor(img, cuda=True): |
| | img_t = np.expand_dims(img.transpose(2, 0, 1), axis=0) |
| | img_t = torch.from_numpy(img_t.astype(np.float32)) |
| | if cuda: |
| | img_t = img_t.cuda(non_blocking=True) |
| | return img_t |
| |
|
| |
|
| | def tensor2img(img_t): |
| | if len(img_t.shape) == 4: |
| | img = img_t[0].detach().cpu().numpy() |
| | elif len(img_t.shape) == 3: |
| | img = img_t.detach().cpu().numpy() |
| | else: |
| | raise NotImplementedError |
| | img = img.transpose(1, 2, 0) |
| | return img |
| |
|
| |
|
| | def cal_padding(L, window_size): |
| | padding_left, padding_right = 0, 0 |
| | if L%window_size != 0: |
| | total = window_size-L%window_size |
| | padding_left = total//2 |
| | padding_right = total - padding_left |
| | return padding_left, padding_right |
| |
|
| | def requires_grad(model, flag=True): |
| | for p in model.parameters(): |
| | p.requires_grad = flag |
| |
|