第一种写法,先读进来,再计算。比较耗内存。
import cv2
import numpy as np
import torch
startt = 700
CNum = 100 # 挑选多少图片进行计算
imgs=[]
for i in range(startt, startt+CNum):
img_path = os.path.join(root_path, filename[i])
img = cv2.imread(img_path)
img = img[:, :, :, np.newaxis]
imgs.append(torch.Tensor(img))
torch_imgs = torch.cat(imgs, dim=3)
means, stdevs = [], []
for i in range(3):
pixels = torch_imgs[:, :, i, :] # 拉成一行
means.append(torch.mean(pixels))
stdevs.append(torch.std(pixels))
# cv2 读取的图像格式为BGR,PIL/Skimage读取到的都是RGB不用转
means.reverse() # BGR --> RGB
stdevs.reverse()
print("normMean = {}".format(means))
print("normStd = {}".format(stdevs))
第二种写法,读一张算一张,比较耗时:先过一遍计算出均值,再过一遍计算出方差。