Pillow
- data format - (H, W, C), RGB
- data dtype - np.uint8
- value range - (0, 255)
from PIL import Image
# Read images
img = Image.open("img.png").convert('RGB') # 读取RGB图像
img = Image.open("img.png").convert('L') # 读取灰度图像(H, W) uint8 [0, 255]
image = Image.fromarray(numpy_array) # Read from numpy.ndarray
# Data translation
img_ndarray = np.array(img_Image) # PIL.Image转numpy.adarray
Opencv
- 获得视频的信息
fps = int(cap.get(cv2.CAP_PROP_FPS))
n_frames = int(cap.get(7))
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
- 绘制
# 文本
frame = cv2.putText(frame, 'str', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), thickness=2)
# 矩形
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), thickness=2)
# 圆
cv2.circle(image, center=(256, 256), radius=2, color=(0, 255, 0), thickness=2)
- 键盘交互
k = cv2.waitKey()
if k == ord('q'):
# do something
Tensorboard
安装:pip install tensorboardX
启动:tensorboard --logdir=<directory_name> --port=<port>
。例如–logdir=runs/,如果runs下有多个实验的tb文件,那么在tb可视化界面中将同时显示多个实验结果。
访问远程服务器上的tb,需要进行端口映射。以XShell为例,如下图所示:
from tensorboardX import SummaryWriter
import os
class Visualizer:
def __init__(self, cfg):
self.cfg = cfg
# 创建runs路径
self.runs_dir = os.path.join(cfg.output_dir, 'runs')
os.makedirs(self.runs_dir, exist_ok=True)
self.writer = SummaryWriter(self.runs_dir)
print('Tensorboard writer created at:', self.runs_dir)
def add_scalars(self, scalar_dict, step):
assert isinstance(scalar_dict, dict), 'scalar_dict must be a dict'
for key, value in scalar_dict.items():
self.writer.add_scalar(key, value, step)