使用python/opencv在集合中查找规范图像

使用python/opencv在集合中查找规范图像,python,image,pandas,opencv,canonical-link,Python,Image,Pandas,Opencv,Canonical Link,我有一个从视频流捕获的大型图像数据集,我想从中提取一个规范的数据集。例如,数据集可能包含60%的纯背景,20%的背景中有人,20%的非常暗的图像 作为一个简单的原型,我想计算每个图像的平均RGB值,并从每个图像中随机抽取一个样本 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

我有一个从视频流捕获的大型图像数据集,我想从中提取一个规范的数据集。例如,数据集可能包含60%的纯背景,20%的背景中有人,20%的非常暗的图像

作为一个简单的原型,我想计算每个图像的平均RGB值,并从每个图像中随机抽取一个样本

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个文件箱,并从每个文件箱中随机抽取一个文件?

我可以通过以下方式完成:

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()
rgb_avg={}
对于img_列表中的i:
img=cv2.imread(i)
rgb_平均值[i]=np.平均值(img)
rgb_系列=pd系列(rgb_平均值)
料仓=局部切割(rgb_系列,料仓=10)
bin_值=已排序([b.right for b in bin.unique()]))
img_bin={b:[]对于bin_值中的b}
对于img,rgb_avg.items()中的rgb:
对于b in bin_值:

如果rgbI能够通过以下方式完成:

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()
rgb_avg={}
对于img_列表中的i:
img=cv2.imread(i)
rgb_平均值[i]=np.平均值(img)
rgb_系列=pd系列(rgb_平均值)
料仓=局部切割(rgb_系列,料仓=10)
bin_值=已排序([b.right for b in bin.unique()]))
img_bin={b:[]对于bin_值中的b}
对于img,rgb_avg.items()中的rgb:
对于b in bin_值:

如果是rgb,您的代码看起来又短又清晰。如果它有效,我想你已经回答了你自己的问题。非常感谢,将我的编辑移到了答案。你的代码看起来简短而清晰。如果有效,我想你已经回答了你自己的问题。非常感谢,将我的编辑移到了答案。