下面代码是对图片进行是否有人进行按键(不用鼠标拖动)二分类,也可以将密码本改成多分类。
import os
import shutil
import cv2
def main(path, save_path, dic, date):
imglist = os.listdir(path)
print(len(imglist)) # 文件夹中文件的数量
for imgname in imglist:
if imgname.endswith("jpg"):
img_path = os.path.join(path, imgname)
img = cv2.imread(img_path)
H, W = img.shape[0], img.shape[1]
scale = 0.6
fimg = cv2.resize(img, (int(W * scale), int(H * scale)))
cv2.namedWindow("img")
cv2.moveWindow("img", 0, 0)
cv2.imshow("img", fimg)
cv2.waitKey(1)
while True:
flag = False
input_value = input("是否有人:1:有人; 2:没人 ")
if not input_value:
print("您没有输入值,请重新输入!")
continue
print(input_value)
e = input_value[-1]
if e in dic:
if not os.path.exists(os.path.join(save_path, dic[e])):
os.makedirs(os.path.join(save_path, dic[e]))
if input_value == "1":
shutil.copy(os.path.join(path, imgname), os.path.join(save_path, dic[e]))
elif input_value == "2":
shutil.copy(os.path.join(path, imgname), os.path.join(save_path, dic[e]))
print("目标移动到{}文件夹".format(dic[e]))
flag = True
if flag:
cv2.destroyAllWindows()
if not os.path.exists(os.path.join(save_path, date)):
os.makedirs(os.path.join(save_path, date))
shutil.move(os.path.join(img_path), os.path.join(save_path, date)) # 从源文集夹中 剪切 图片到 已处理文件夹
break
else:
print("您输入的值没在密码本儿中!")
if __name__ == '__main__':
src_path = r"D:\person_data" # 源图片文件夹
save_path = r"D:\person_cls" # 按照文件夹分类好的图片文件夹
date = "1108_processed" # 已经分类的图片,相当于备份
dic = {"1": "person", "2": "no-person"} # 密码本, 根据按数字键(可扩展为字母键),对文件夹中的图片进行分类
main(src_path, save_path, dic, date)