zoukankan      html  css  js  c++  java
  • 计算图片均值和方差脚本

    # coding: utf-8
    
    import numpy as np
    import cv2
    import random
    
    """
        随机挑选CNum张图片,进行按通道计算均值mean和标准差std
        先将像素从0~255归一化至 0-1 再计算
    """
    
    
    train_txt_path = '../../Data/train.txt'
    
    CNum = 2000     # 挑选多少图片进行计算
    
    img_h, img_w = 32, 32
    imgs = np.zeros([img_w, img_h, 3, 1])
    means, stdevs = [], []
    
    with open(train_txt_path, 'r') as f:
        lines = f.readlines()
        random.shuffle(lines)   # shuffle , 随机挑选图片
    
        for i in range(CNum):
            img_path = lines[i].rstrip().split()[0]
    
            img = cv2.imread(img_path)
            img = cv2.resize(img, (img_h, img_w))
    
            img = img[:, :, :, np.newaxis]
            imgs = np.concatenate((imgs, img), axis=3)
            print(i)
    
    imgs = imgs.astype(np.float32)/255.
    
    
    for i in range(3):
        pixels = imgs[:,:,i,:].ravel()  # 拉成一行
        means.append(np.mean(pixels))
        stdevs.append(np.std(pixels))
    
    means.reverse() # BGR --> RGB
    stdevs.reverse()
    
    print("normMean = {}".format(means))
    print("normStd = {}".format(stdevs))
    print('transforms.Normalize(normMean = {}, normStd = {})'.format(means, stdevs))
    
    

    打印输出:
    normMean = [0.49680823, 0.48622987, 0.44980356]
    normStd = [0.24765104, 0.24397221, 0.26272318]
    transforms.Normalize(normMean = [0.49680823, 0.48622987, 0.44980356], normStd = [0.24765104, 0.24397221, 0.26272318])

    所以:
    print("normMean = {}".format(means))
    print("normStd = {}".format(stdevs))
    可以输出list

  • 相关阅读:
    模糊查询于聚合函数
    用SQL语句操作数据
    数据库增删改查
    错题本4
    数据查询基础
    用表组织数据
    初识数据库
    错题本3
    深入C#的String类
    定位
  • 原文地址:https://www.cnblogs.com/yanghailin/p/11369673.html
Copyright © 2011-2022 走看看