import os import shutil import PIL.Image as Image import cv2 import numpy as np import pandas as pd def selet_pic(imgpath,labpath): pic_path = os.listdir(labpath) list = [] for alldir in pic_path: child = os.path.join(labpath,alldir) img = Image.open(child) # img.show() pic_arrays = np.array(img) #将图片转化成数组 if np.mean(pic_arrays) == 0: # print("图片为黑色",alldir) list.append(alldir) # print(list) return list def del_pic(list): for i in list: img_path = os.path.join(imgpath,i) lab_path = os.path.join(labpath,i) print(lab_path) os.remove(img_path) #直接删除 os.remove(lab_path) # shutil.move(img_path, img_del_path) # shutil.move(lab_path,lab_del_path) #移到指定位置 if __name__== "__main__": imgpath = r'D:\shiyan\img\waterbody\water\img_256' labpath = r'D:\shiyan\img\waterbody\water\label_256' list = selet_pic(imgpath,labpath) # del_pic(list,img_del_path,lab_del_path) del_pic(list)
时间: 2024-04-28 22:27:07 浏览: 120
这段代码定义了两个函数`selet_pic`和`del_pic`,并在`if __name__== "__main__":`语句下面进行调用。具体来说,代码的作用是:
1. `selet_pic`函数:该函数接受两个参数`imgpath`和`labpath`,分别表示图片文件和标签文件所在的目录。在该函数中,首先通过`os.listdir`获取标签文件目录下的所有文件名,并将它们存储在`pic_path`列表中。然后,遍历该列表中的每一个文件名,将其拼接为完整的路径,读取对应的图片文件并将其转化成数组形式。接着,判断该数组的平均值是否等于0,如果是,则将该文件名添加到`list`列表中。最后,返回`list`列表。
2. `del_pic`函数:该函数接受一个参数`list`,表示要删除的文件名列表。在该函数中,遍历`list`列表中的每一个文件名,将其拼接为完整的路径,并使用`os.remove`函数直接删除对应的图片文件和标签文件。
3. 在`if __name__== "__main__":`语句下面,定义了`imgpath`和`labpath`两个变量,分别表示图片文件和标签文件所在的目录。接着,调用`selet_pic`函数获取需要删除的文件名列表,然后调用`del_pic`函数删除对应的文件。
阅读全文