当我导入具有相应标签的图像和csv文件的数据集时,我做了一个提取每个图像标签的功能。但是,我必须删除一些不符合特定条件的图像。有没有办法删除相应的标签?
这是用于加载图像和标签的功能
def imp_img():
dirname = '/s/desk/img/'
x = np.zeros((1000, 100, 100), dtype=np.float32)
for i in range(x.shape[0]):
img = Image.open(dirname + 'img_%02d.png' % (i))
img = np.array(img)
x[i] = img
path = '/s/desk/labels_classificatio.csv'
labels = pd.read_csv(path, usecols=["category"],
sep=";" )
y = np.array(labels)
return x, y
这是它们的导入方式
x, y = imp_img()
x = x/255.0
y = y.reshape(y.shape[0], 1)
x.shape, y.shape
现在我进行了for循环,以去除太暗的图像
c =[]
for i in x:
if np.sum(i) >= 100:
c.append(i)
c = np.asarray(c)
现在的问题是,我的图像少于标签。有没有办法删除相应的标签?
答案 0 :(得分:0)
您正在寻找for i in x
。它使您可以循环遍历可迭代对象,同时保持计数。代替for i, img in enumerate(x)
,我们将执行i
,它使我们维护循环计数器c = []
c_labels = []
for i, img in enumerate(x):
if np.sum(img) >= 100:
c.append(img)
c_labels.append(y[i])
c = np.asarray(c)
c_labels = np.asarray(c_labels)
。这样,您可以取消与符合您条件的图像相对应的标签。
代码:
cmake