求數據集 的均值

'''
程序一,求數據集的均值
'''
#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的修正。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章