文章目录

  • 背景:
    • 关于分类标签:
  • 功能实现逻辑:
  • 代码记录:

背景:

因图片标记需要进行类型分类,目前将手掌图片做了若干个分类,然后通过labelme导入分类列表txt,对图片进行分类标注之后,目的是通过读取标注分类标签实现根据标签归类图片的功能。

关于分类标签:

目前已建立了分类类型种类并手工将相关的图片放在对应的文件夹里作为示例数据库。同时在labelme.exe所在目录中建立了分类标签文档,以flags.txt保存。

功能实现逻辑:

  1. 通过脚本读取flags.txt文件中的分类标签名,自动创建同名分类文件夹。

  2. 使用labelme手工对图片进行分类标签的标注,自动生成与图片同名的json文件,包含了分类标签信息(同一张图片可能有单个或多个分类标签)。

  3. 通过脚本读取json文件中的flags字段,选出值为True的分类标签并读取该文件对应的图片名称,找到该图片复制到对应的分类文件夹中。

代码记录:

import os, shutil
import json# 基础目录
abspath = "/"
# 源目录
src_dir = "images"
src_path = f"{abspath}/{src_dir}"
# 过滤后输出的目录
dst_root_dir = "sorted_images"
dst_root_path = f"{abspath}/{dst_root_dir}"# 读取flag.txt文件中的标签名并创建分类文件夹。
# Read flag.txt and create classification folders out of the flag names
def create_cls_folders(flags_txt_path):# @ 读取flags.txt中的分类标签名并转换为列表。# 定义分类标签列表# Define the classification directory listdirlist = []with open(flags_txt_path, "r", encoding="utf-8") as f:for line in f.readlines():foldername = line.split("\n")[0]if foldername not in dirlist:dirlist.append(foldername)# print(dirlist)# 拼接分类文件夹路径cls_path = f"{abspath}/{dst_root_dir}"# 遍历分类标签列表中的分类名称for folder in dirlist:# 使用分类标签列表中所有的分类名称命名文件夹有,没有文件夹时则进行创建。if folder in dirlist:cls_folder = f"{cls_path}/{folder}"# print(cls_folder)print("Creating folder %s" % cls_folder)if not os.path.exists(cls_folder):os.mkdir(cls_folder)def cp_files_to_cls_folders():# 定义id文件夹列表id_folder_list = sorted(os.listdir(src_path))# print(id_folder_list)# 遍历源路径的id文件夹列表for i, id_folder in enumerate(id_folder_list, 1):# print(i, id_folder)src_folder = f"{src_path}/{id_folder}"# 遍历id源文件夹中的文件,如果包含.json后缀的文件,则读取其中的flags标签内容。# Traverse the id_folders and read the contents under the "flags" tag when coming across the files with the ".json" suffix.for file in os.listdir(src_folder):src_json_path = f"{src_folder}/{file}"if '.json' in file:with open(src_json_path, "r") as f:r = json.load(f)cls = r['flags']# print(cls)# 列表推导式:如果分类标签中值为True,则取出对应的分类标签键t_cls = [x for x in cls if cls[x] is True]# print(t_cls)# 遍历目标路径的文件夹列表,创建True值分类标签同名文件夹,若路径中没有文件夹,则进行创建。for t_cls_folder in os.listdir(dst_root_path):if t_cls_folder in t_cls:# print(t_cls_folder)# 拼接值为True的目标分类文件夹路径dst_t_cls_path = f"{dst_root_path}/{t_cls_folder}"# 拼接源标签分类布尔值为True的文件(jpg和json文件)的路径src_jpg_path = f"{src_folder}/{r['imagePath']}"src_json_path = f"{src_folder}/{r['imagePath'][:-4]+'.json'}"# 拼接标签分类布尔值为True的文件要复制过去的目标文件夹路径dst_folder = f"{dst_t_cls_path}/{id_folder}"# print(dst_folder)# 若路径中没有文件夹则创建文件夹if not os.path.exists(dst_folder):os.mkdir(dst_folder)# 拼接源文件(jpg和json文件)的路径dst_jpg_path = f"{dst_folder}/{r['imagePath']}"dst_json_path = f"{dst_folder}/{r['imagePath'][:-4]+'.json'}"print("Copying image file to folder %s" % dst_jpg_path)shutil.copy(src_jpg_path, dst_jpg_path)print("Copying json file to folder %s" % dst_json_path)shutil.copy(src_json_path, dst_json_path)if __name__ == '__main__':# 分类文件目录flags_txt_path = "../flags.txt"# create_cls_folders(flags_txt_path)cp_files_to_cls_folders()

参考文献(视频):【实现Python筛选Json数据【Python】-哔哩哔哩】 https://b23.tv/WUd1xr4

Python实现图片标记分类文件夹自动归类文件的脚本相关推荐

  1. python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...

    这里为大家提供一个python操作文件的例子,实现功能:从一个文件夹自动拷贝文件到目标文件夹. 供python爱好者学习参考. 代码如下: # Filename: CopyPictures.py im ...

  2. 选择文件夹里指定文件图片路径_这简直是鼠标一拖,自动帮你整理好文件

    本文由阿刚同学原创,首发在乐软博客(www.isharepc.com) 欢迎关注乐软博客微信公众号"阿刚同学" 在日常工作学习中,长年累月的使用硬盘中的文件必定多如牛毛,如果没有特 ...

  3. python 对图片进行直方图均衡化处理(批量自动遍历文件夹图片)

    请把图片拷贝后再做处理,不然它会直接覆盖原图!!! # -*- coding:utf-8 -*-import os import cv2 import numpy as nppath = './'al ...

  4. 使用Python设计一个自动查询文件夹的exe文件

    使用Python设计一个自动查询文件夹的exe文件 文章目录 使用Python设计一个自动查询文件夹的exe文件 前言 一.消灭噩梦(~~摸鱼~~ )的开始 二.~~摸鱼~~ 效果升级--添加拷贝功能 ...

  5. python根据文件名或后缀名遍历文件夹下所有文件或图片的路径,并计算文件行数

    python遍历文件夹下所有文件或图片的路径 代码 指定目录下的指定后缀文件 import glob #获取指定目录下的所有图片 print (glob.glob("\\home\\qiao ...

  6. python自动整理文件夹_计算机文件和文件夹的Python自动管理,自动化,电脑,及

    目录 一.输出目录所在的文件以及文件夹 import os print(os.getcwd())#获得当前文件的地址 print(os.path.join('MyProjects','AI'))#让P ...

  7. python删除文件夹中的jpg_python删除文件夹下相同文件和无法打开的图片

    前天不小心把硬盘格式化了,丢了好多照片,后来用Recuva这款软件成功把文件恢复过来,可是恢复的文件中有好多重复的文件和无法打开的图片,所以写了两个python的小程序用来解决这个问题 删除相同文件: ...

  8. python 清空文件夹_python读写文件

    文件读写 文件读写,是Python代码调用电脑文件的主要功能,能被用于读取和写入文本记录.音频片段.Excel文档.保存邮件以及任何保存在电脑上的东西. ①读取文件 首先,我们在桌面新建一个text文 ...

  9. 【转】python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)

    原文:​​​​​​ ​​​​​​​​​​​​​​​​​​​python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)..._心失荒野的博客-CSDN博客 一. ...

  10. python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料

    复制代码代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ...

最新文章

  1. 机器学习在稀疏标注数据内部审计中的应用
  2. [译][python]ImportError:attempted relative import with no known parent package
  3. java 框架mvc_JAVA框架-MVC模式
  4. iis6 配置python CGI
  5. Android 浮窗开发之窗口层级
  6. 虚拟机桥接模式-CentOS下配置静态IP
  7. VAssistX失效后重新安装双击没反应
  8. 高等数学课后答案上册同济大学第七版第一章答案
  9. 人工智能之AlphaBeta剪枝算法
  10. Wpf MessageBox的用法
  11. vim设置自动保存快捷键、执行当前正在编写的Shell脚本快捷键
  12. 《声声慢·寻寻觅觅》 李清照
  13. 1024 祝我们快乐
  14. 这个帖子记录一下java代码转换成易语言代码的坑[持续更新]
  15. 得链表者得天下(上)
  16. 华为5G CPE是做什么用的?
  17. 【云云怪】第3个项目:弈厢棋苑
  18. 群晖消息通知 推送服务器,群晖开启系统信息微信推送服务
  19. JM(264)基础知识整理
  20. 163个人电子邮箱免费注册,外贸邮箱用哪个比较好?

热门文章

  1. SCAU高级语言程序设计--实验9 函数的应用(1)
  2. 期刊分类abcde_收藏!中文顶级期刊分类,多图教你不被ABCD类搞晕!
  3. ORACLE数据库无法执行UPDATE
  4. 打印时显示rpc服务器不可用,打印时出现RPC服务器不可用 ?
  5. 中文和英语中主语、谓语、宾语、定语、状语、补语的定义
  6. ! [remote rejected] master -> master (pre-receive hook declined)
  7. php怎么解析josn数据,用PHP解析JSON数据
  8. PS快速去除文字水印图片文字水印去除LOGO
  9. 常有不规则动词的过去式和过去分词…
  10. 云计算与大数据之间的关系