2017-08-05 59 views
1

我有一個從視頻流中捕獲的圖像的大型數據集,我想從中提取一個規範化的數據集。例如,數據集可能包含60%的背景,20%的背景以及20%的非常暗的圖像。在python/opencv中找到規範化的圖像熊貓

作爲一個天真的原型,我想要計算每個圖像的平均RGB和bin相似的RGB值,並從每個bin中取一個隨機樣本。

rgb_avg = {} 
for i in img_list: 
    img = cv2.imread(i) 
    rgb_avg[i] = np.mean(img) 
rgb_series = pd.Series(rgb_avg) 
bins = pd.cut(rgb_series,bins=10) 

這給我留下了一系列的類別,並不能真正找到如何面對這一系列工作,並從每個箱隨機抽取一個很好的教程。我如何將RGB系列分成10個分箱,並從每個分箱中隨機採樣一個文件?

+0

您的代碼看起來簡短明瞭。如果它有效,我想你已經回答了你自己的問題。 –

+0

非常感謝,把我的編輯移到了答案上。 –

回答

0

我能夠通過完成它:

rgb_avg = {} 
for i in img_list: 
    img = cv2.imread(i) 
    rgb_avg[i] = np.mean(img) 
rgb_series = pd.Series(rgb_avg) 
bins = pd.cut(rgb_series,bins=10) 
bin_values = sorted([b.right for b in bins.unique()]) 
img_bins = {b : [] for b in bin_values} 
for img,rgb in rgb_avg.items(): 
    for b in bin_values: 
     if rgb <= b: 
      img_bins[b].append(img) 
for b in img_bins: 
    img = np.random.choice(img_bins[b]) 
    plt.imshow(cv2.imread(img)) 
    plt.show() 

未必是最有效的,但它能夠完成任務。