【python&遍历图片进行分类转存到不同的文件夹】

您所在的位置:网站首页 python如何分类数据集里的东西 【python&遍历图片进行分类转存到不同的文件夹】

【python&遍历图片进行分类转存到不同的文件夹】

2024-07-14 13:56| 来源: 网络整理| 查看: 265

【python&遍历图片进行分类转存到不同的文件夹】 功能说明代码实现知识点补充Reference:

在这里插入图片描述

功能说明

当不同类型的图片存放在同一个文件夹中,方便进行分类,用一个脚本,遍历读取文件夹下的所有图片,并创建一个窗口进行展示,然后输入不同的数字类别进行分类,相同种类的图片转存到自动创建的类别文件夹中。

效果展示:(分类前) 在这里插入图片描述

分类后: 在这里插入图片描述

代码实现 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/05/26 # @Author : Kenn_Wu # purpose : to pick up different pictures to transfer into different dirs when you input different classify numbers import cv2 import os class_name = ['car', 'people', 'bicycle'] # 1 2 3 origin_path = './' # 要分类的图片文件夹路径 to_path = './ground_truth/' # 最终要保存的文件路径,判断不存在则自动创建 if not os.path.exists(to_path): os.mkdir(to_path) def shearfile(src, dir): # 定义一个移动(剪切)图片的函数 filename = os.path.basename(src) # 遍历得到文件/图片的初始文件名 save_path = to_path + dir # 保存文件/图片的文件夹,判断不存在则创建 if not os.path.exists(save_path): os.mkdir(save_path) os.rename(src, save_path + '/' + '_' +filename) # 使用rename函数,更改移动后的文件名(在原文件名的基础上增加了类别名) for root, dirs, files in os.walk(origin_path): # 同时遍origin_path当前路径下的所有文件夹,子文件 for file in files: key = 0 name = "" img = cv2.imread(origin_path + file) # 遍历得到图片子文件 cv2.imshow('image',img) # 创建一个窗口展示遍历图片 key = cv2.waitKey(0) cv2.destroyAllWindows() if key == 49: name = class_name[0] elif key == 50: name = class_name[1] elif key == 51: name = class_name[2] else: print('请输入:1 or 2 or 3 to classify') break shearfile(origin_path+file, name) 知识点补充

涉及知识:

① key对应的ASCⅡ码数值 (常用)

key: 48-57 对应 键盘上数字 0-9 vbKeyEscape 27 表示 ESC 键 A 键到 Z 键与其 ASCII 码的相应值’A’ 到 ‘Z’ 是一致的(‘A’ 到 ‘Z’ ---->65-90)

② python BIF:

if not os.path.exists(to_path): os.mkdir(to_path)

③ 遍历文件夹path下的所有文件使用:for root, dirs, files in walk(path)函数。 for root, dirs, files in os.walk(origin_path):

origin_path代表需要遍历的根文件夹root表示正在遍历的文件夹的名字(根/子)dirs正在遍历的文件夹下的子文件夹集合files正在遍历的文件夹中的文件集合

④ rename函数,内参数为:(原名称,更改后的名称) os.rename(name, new_name)

⑤ waitKey(delay)函数

waitKey(delay)函数的功能是不断刷新图像,频率时间为delay,单位为ms 返回值为当前键盘按键值。 waitKey(delay)–是在一个给定的时间内(单位ms)等待用户按键触发; 如果用户没有按下键,则接续等待(循环)设置waitKey(0),则表示程序会无限制的等待用户的按键事件。 一般在imgshow的时候,如果设置waitKey(0),代表按任意键继续 显示视频时,延迟时间需要设置为 大于0的参数,用于设置在显示完一帧图像后程序等待”delay”ms再显示下一帧视频;如果使用waitKey(0)则只会显示第一帧视频

Reference:

https://blog.csdn.net/u014737138/article/details/80375514 https://blog.csdn.net/cncco/article/details/1540202



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3