File size: 1,320 Bytes
1cac303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import numpy as np
import cv2

def _uniform(arr, _min=None, _max=None):
    height, width = arr.shape[0:2]
    _min = np.min(arr) if _min is None else _min
    _max = np.max(arr) if _max is None else _max
    if _min == _max:
        return np.zeros((height, width, 3), dtype=np.uint8)
    vis = np.clip(arr, _min, _max)
    vis = (vis - _min) / (_max - _min) 
    vis = np.uint8(vis * 255.0)
    if len(vis.shape) == 2:
        vis = cv2.cvtColor(vis, cv2.COLOR_GRAY2BGR)
    return vis

def _hstack(arr_list, height=400):
    arrs = []
    for arr in arr_list:
        width = round(height / arr.shape[0] * arr.shape[1])
        canvas = cv2.resize(arr, (width, height))
        cv2.rectangle(canvas, (0, 0), (canvas.shape[1], canvas.shape[0]), color=(255, 160, 122), thickness=2)
        arrs.append(canvas)
    return np.hstack(tuple(arrs))

def _vstack(arr_list):
    max_width = max([arr.shape[1] for arr in arr_list])
    arrs = []
    for arr in arr_list:
        pad_right = max_width - arr.shape[1]
        # top, bottom, left, right
        canvas = cv2.copyMakeBorder(arr, 0, 0, 0, pad_right, cv2.BORDER_CONSTANT, value=(255, 160, 122))
        cv2.rectangle(canvas, (0, 0), (canvas.shape[1], canvas.shape[0]), color=(255, 160, 122), thickness=2)
        arrs.append(canvas)
    return np.vstack(tuple(arrs))