'''
程序一,求数据集的均值
'''
#import os
# import cv2
# from numpy import *
# #dataset\test_1206\images
# # img_dir='./dataset/defect_myself_1213/train/images'
# img_dir ='./dataset/P80_test/images'
# img_list=os.listdir(img_dir)
# img_size=256
# sum_r=0
# sum_g=0
# sum_b=0
# count=0
#
# for img_name in img_list:
# img_path=os.path.join(img_dir,img_name)
# img=cv2.imread(img_path)
# img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
# img=cv2.resize(img,(img_size,img_size))
# sum_r=sum_r+img[:,:,0].mean()
# sum_g=sum_g+img[:,:,1].mean()
# sum_b=sum_b+img[:,:,2].mean()
# count=count+1
#
# sum_r=sum_r/count
# sum_g=sum_g/count
# sum_b=sum_b/count
# img_mean=[sum_r,sum_g,sum_b]
# print('count:',count)
# print ('img_mean:',img_mean)# BGR 的均值为:[115.79398158283313, 89.15586755059039, 84.4981419263159]
'''
程序二 求均值,并输出每一张图像的均值。
'''
#求得均值为RGB [84.4981419263159,89.15586755059039,115.79398158283313]
import os
import numpy as np
import cv2
ims_path = './dataset/defect_myself_1213/train/images/' # 图像数据集的路径
ims_list = os.listdir(ims_path)
R_means = []
G_means = []
B_means = []
for im_list in ims_list:
im = cv2.imread(ims_path + im_list)
# extrect value of diffient channel
im_R = im[:, :, 0]
im_G = im[:, :, 1]
im_B = im[:, :, 2]
# count mean for every channel
im_R_mean = np.mean(im_R)
im_G_mean = np.mean(im_G)
im_B_mean = np.mean(im_B)
# save single mean value to a set of means
R_means.append(im_R_mean)
G_means.append(im_G_mean)
B_means.append(im_B_mean)
print('图片:{} 的 RGB平均值为 \n[{},{},{}]'.format(im_list, im_R_mean, im_G_mean, im_B_mean))
# three sets into a large set
a = [R_means, G_means, B_means]
mean = [0, 0, 0]
# count the sum of different channel means
mean[0] = np.mean(a[0])
mean[1] = np.mean(a[1])
mean[2] = np.mean(a[2])
print('数据集的BGR平均值为\n[{},{},{}]'.format(mean[0], mean[1], mean[2]))
# cv.imread()读取Img时候将rgb转换为了bgr,谢谢taylover-pei的修正。