使用python将图片按标签分入不同文件夹的方法

yizhihongxing

下面是使用Python将图片按标签分入不同文件夹的方法的完整攻略。

步骤一:安装依赖包

在Python项目中,通常需要用到两个常用的第三方库:Pillowos,如果你已经安装了Python,可以通过以下命令安装这两个库:

pip install Pillow
pip install os

步骤二:准备数据

使用python进行图片分类,需要准备一个包含所有需要分类的图片的文件夹。在该文件夹中,每个图片都需要有一个对应的标签,标签通常作为图片的命名规则来实现。

例如我们有一个文件夹images,其中包含了几张图片:

  • cat001.jpg
  • dog001.jpg
  • cat002.jpg
  • dog002.jpg

对于这些图片,我们可以将它们按照分类标签划分到两个子文件夹catsdogs中,不妨把catdog作为每张图片的分类标签。

步骤三:编写代码

下面是一个基本的Python脚本,它可以按照图片的分类标签将图片分别复制到catsdogs文件夹中:

import os
from PIL import Image

# 打开源文件夹
src_folder = 'images'
filelist = os.listdir(src_folder)

# 循环遍历源文件夹中的图片
for filename in filelist:
    # 跳过非图片文件
    if not filename.endswith('.jpg') and not filename.endswith('.png'):
        continue

    # 获取图片分类标签
    label = filename.split('.')[0]

    # 打开图片文件
    img = Image.open(os.path.join(src_folder, filename))

    # 新建子文件夹
    dst_folder = f'{label}s'
    if not os.path.exists(dst_folder):
        os.makedirs(dst_folder)

    # 复制文件到目标文件夹
    dst_path = os.path.join(dst_folder, filename)
    img.save(dst_path)

上面的代码通过os模块遍历源文件夹中的所有图片,再通过Pillow库打开每张图片,并根据文件名获取图片的分类标签。然后创建一个以分类标签命名的文件夹,并将该分类下的图片复制到目标文件夹中。

示例一:按照图片颜色分类

考虑到实际中,分类依据可能不仅是图片所描述的事物种类,还可以是图片的特征,比如颜色。

在Python中,可以使用Pillow库中的ImageColor类来实现颜色识别,下面是一个示例代码,根据图片的颜色将图片分类,将颜色名称作为分类标签:

import os
from PIL import Image, ImageColor

# 打开源文件夹
src_folder = 'images'
filelist = os.listdir(src_folder)

# 循环遍历源文件夹中的图片
for filename in filelist:
    # 跳过非图片文件
    if not filename.endswith('.jpg') and not filename.endswith('.png'):
        continue

    # 获取图片颜色分类标签
    img = Image.open(os.path.join(src_folder, filename))
    dominant_color = ImageColor.getcolor(img.getcolors()[0][1], 'RGB')  # 取图片中出现次数最多的颜色
    label = ImageColor.colormap.get(dominant_color)

    # 新建子文件夹
    dst_folder = f'{label}s'
    if not os.path.exists(dst_folder):
        os.makedirs(dst_folder)

    # 复制文件到目标文件夹
    dst_path = os.path.join(dst_folder, filename)
    img.save(dst_path)

示例二:按照文件名后缀分类

还有一种实用的分类方法是基于文件名后缀。例如将.jpg.png的图片分别归入两个不同的文件夹中,可以按照如下方式编写代码:

import os
from PIL import Image

# 打开源文件夹
src_folder = 'images'
filelist = os.listdir(src_folder)

# 循环遍历源文件夹中的图片
for filename in filelist:
    # 跳过非图片文件
    if not filename.endswith('.jpg') and not filename.endswith('.png'):
        continue

    # 获取图片后缀分类标签
    label = filename.split('.')[-1]

    # 新建子文件夹
    dst_folder = f'{label}s'
    if not os.path.exists(dst_folder):
        os.makedirs(dst_folder)

    # 复制文件到目标文件夹
    dst_path = os.path.join(dst_folder, filename)
    img = Image.open(os.path.join(src_folder, filename))
    img.save(dst_path)

上述代码中,首先判断文件名的后缀是否是.jpg.png,并用后缀名作为图片的分类标签。然后创建一个以后缀名命名的文件夹,并将该分类下的图片复制到目标文件夹中。

这里给出了两个简单的示例,其他更多的分类方式可以根据实际需求编写代码。希望能对你有所启发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python将图片按标签分入不同文件夹的方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python列表(list)、字典(dict)、字符串(string)基本操作小结

    以下是详细讲解“Python列表(list)、字典(dict)、字符串(string)基本操作小结”的完整攻略。 在Python中,列表、字典和字符串是三种常用的数据类型。本文将介绍这三种数据基本操作,包括创建、访问、添加和删除元素、切片、排序等。 列表(list)的基本操作 创建列表 在Python中,可以使用方括号[]或list()函数来创建一个列表。例…

    python 2023年5月13日
    00
  • Python实现拓扑算法的示例

    Python实现拓扑算法的示例主要分为以下几个步骤: 构造图数据结构,例如使用字典表示邻接表,或使用NetworkX等图论库; 拓扑排序,通常可以使用Kahn算法或DFS算法; 处理循环依赖,例如输出错误信息或处理成环形依赖。 下面分别通过两个示例说明实现拓扑算法的过程。 示例1:使用字典表示邻接表的拓扑算法 首先,构建一个有向无环图(DAG),使用字典表示…

    python 2023年6月5日
    00
  • python接口自动化测试数据和代码分离解析

    Python接口自动化测试中,数据和代码的分离是一个很重要的概念,可以让测试数据和测试逻辑分离,使得维护和管理测试项目更加方便。下面是我总结的Python接口自动化测试数据和代码分离的完整攻略: 1. 准备测试数据 在数据和代码分离的情况下,我们通常会将测试数据保存在一个独立的文件中,比如Excel、CSV等格式的文件,然后通过Python程序读取这些文件,…

    python 2023年6月3日
    00
  • Python的另外几种语言实现

    Python语言有多种实现,其中比较常见的有CPython、Jython、IronPython、PyPy等。它们都是通过不同的方式来实现Python语言的解释器和编译器,具有各自的特点和适用场景。 CPython CPython是官方Python实现,也是Python编程语言的标准实现。它是使用C语言开发的解释器,可以在Unix/Linux、Windows、…

    python 2023年5月19日
    00
  • 华为2019校招笔试题之处理字符串(python版)

    下面是“华为2019校招笔试题之处理字符串(python版)”完整攻略。 题目描述 给定一个字符串,按照单词顺序进行逆序输出。单词间以空格隔开,字符串中不包含多余的空格,字符串长度小于1000个字符。 解题思路 该题的主要难点在于如何逆序输出字符串。我们可以按照以下步骤来解决该题: 使用split()方法将字符串按照空格划分为单词,并存储在一个列表中。 将单…

    python 2023年5月14日
    00
  • python实现的登陆Discuz!论坛通用代码分享

    Python实现的登录Discuz!论坛通用代码分享 在使用Python进行爬虫抓取网页数据时,我们常常需要实现对目标网站的用户登陆操作,以便于能够获取需要用户身份验证的信息。对于Discuz!论坛,其登陆机制比较复杂,需要经过多个步骤才能完成。因此,本文将详细讲解如何使用Python实现自动登陆Discuz!论坛的完整攻略。 1. 分析Discuz!论坛的…

    python 2023年6月6日
    00
  • python通过http上传文件思路详解

    在Python中,我们可以使用HTTP协议上传文件。本文将介绍Python通过HTTP上传文件的思路,并提供两个示例。 1. 通过POST请求上传文件 我们可以使用POST请求上传文件。以下是一个示例,演示如何使用requests库上传文件: import requests url = ‘http://example.com/upload’ files = …

    python 2023年5月15日
    00
  • python开发的自动化运维工具ansible详解

    Python开发的自动化运维工具Ansible详解 什么是Ansible? Ansible是一款支持Python语言编写的自动化运维工具,其主要功能是对大规模计算机系统进行配置、部署和管理。使用Ansible可以方便运维人员对维护的服务器进行批量操作,提高工作效率。 Ansible的优势 少依赖:除Python外,只需要在被管理主机安装SSH服务即可,无需在…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部