NeuralBody / lib /utils /img_utils.py
pengsida
initial commit
1ba539f
import torch
from matplotlib import cm
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
import cv2
def unnormalize_img(img, mean, std):
"""
img: [3, h, w]
"""
img = img.detach().cpu().clone()
# img = img / 255.
img *= torch.tensor(std).view(3, 1, 1)
img += torch.tensor(mean).view(3, 1, 1)
min_v = torch.min(img)
img = (img - min_v) / (torch.max(img) - min_v)
return img
def bgr_to_rgb(img):
return img[:, :, [2, 1, 0]]
def horizon_concate(inp0, inp1):
h0, w0 = inp0.shape[:2]
h1, w1 = inp1.shape[:2]
if inp0.ndim == 3:
inp = np.zeros((max(h0, h1), w0 + w1, 3), dtype=inp0.dtype)
inp[:h0, :w0, :] = inp0
inp[:h1, w0:(w0 + w1), :] = inp1
else:
inp = np.zeros((max(h0, h1), w0 + w1), dtype=inp0.dtype)
inp[:h0, :w0] = inp0
inp[:h1, w0:(w0 + w1)] = inp1
return inp
def vertical_concate(inp0, inp1):
h0, w0 = inp0.shape[:2]
h1, w1 = inp1.shape[:2]
if inp0.ndim == 3:
inp = np.zeros((h0 + h1, max(w0, w1), 3), dtype=inp0.dtype)
inp[:h0, :w0, :] = inp0
inp[h0:(h0 + h1), :w1, :] = inp1
else:
inp = np.zeros((h0 + h1, max(w0, w1)), dtype=inp0.dtype)
inp[:h0, :w0] = inp0
inp[h0:(h0 + h1), :w1] = inp1
return inp
def transparent_cmap(cmap):
"""Copy colormap and set alpha values"""
mycmap = cmap
mycmap._init()
mycmap._lut[:,-1] = 0.3
return mycmap
cmap = transparent_cmap(plt.get_cmap('jet'))
def set_grid(ax, h, w, interval=8):
ax.set_xticks(np.arange(0, w, interval))
ax.set_yticks(np.arange(0, h, interval))
ax.grid()
ax.set_yticklabels([])
ax.set_xticklabels([])
color_list = np.array(
[
0.000, 0.447, 0.741,
0.850, 0.325, 0.098,
0.929, 0.694, 0.125,
0.494, 0.184, 0.556,
0.466, 0.674, 0.188,
0.301, 0.745, 0.933,
0.635, 0.078, 0.184,
0.300, 0.300, 0.300,
0.600, 0.600, 0.600,
1.000, 0.000, 0.000,
1.000, 0.500, 0.000,
0.749, 0.749, 0.000,
0.000, 1.000, 0.000,
0.000, 0.000, 1.000,
0.667, 0.000, 1.000,
0.333, 0.333, 0.000,
0.333, 0.667, 0.000,
0.333, 1.000, 0.000,
0.667, 0.333, 0.000,
0.667, 0.667, 0.000,
0.667, 1.000, 0.000,
1.000, 0.333, 0.000,
1.000, 0.667, 0.000,
1.000, 1.000, 0.000,
0.000, 0.333, 0.500,
0.000, 0.667, 0.500,
0.000, 1.000, 0.500,
0.333, 0.000, 0.500,
0.333, 0.333, 0.500,
0.333, 0.667, 0.500,
0.333, 1.000, 0.500,
0.667, 0.000, 0.500,
0.667, 0.333, 0.500,
0.667, 0.667, 0.500,
0.667, 1.000, 0.500,
1.000, 0.000, 0.500,
1.000, 0.333, 0.500,
1.000, 0.667, 0.500,
1.000, 1.000, 0.500,
0.000, 0.333, 1.000,
0.000, 0.667, 1.000,
0.000, 1.000, 1.000,
0.333, 0.000, 1.000,
0.333, 0.333, 1.000,
0.333, 0.667, 1.000,
0.333, 1.000, 1.000,
0.667, 0.000, 1.000,
0.667, 0.333, 1.000,
0.667, 0.667, 1.000,
0.667, 1.000, 1.000,
1.000, 0.000, 1.000,
1.000, 0.333, 1.000,
1.000, 0.667, 1.000,
0.167, 0.000, 0.000,
0.333, 0.000, 0.000,
0.500, 0.000, 0.000,
0.667, 0.000, 0.000,
0.833, 0.000, 0.000,
1.000, 0.000, 0.000,
0.000, 0.167, 0.000,
0.000, 0.333, 0.000,
0.000, 0.500, 0.000,
0.000, 0.667, 0.000,
0.000, 0.833, 0.000,
0.000, 1.000, 0.000,
0.000, 0.000, 0.167,
0.000, 0.000, 0.333,
0.000, 0.000, 0.500,
0.000, 0.000, 0.667,
0.000, 0.000, 0.833,
0.000, 0.000, 1.000,
0.000, 0.000, 0.000,
0.143, 0.143, 0.143,
0.286, 0.286, 0.286,
0.429, 0.429, 0.429,
0.571, 0.571, 0.571,
0.714, 0.714, 0.714,
0.857, 0.857, 0.857,
1.000, 1.000, 1.000,
0.50, 0.5, 0
]
).astype(np.float32)
colors = color_list.reshape((-1, 3)) * 255
colors = np.array(colors, dtype=np.uint8).reshape(len(colors), 1, 1, 3)