下面是使用Python将图片按标签分入不同文件夹的方法的完整攻略。
步骤一:安装依赖包
在Python项目中,通常需要用到两个常用的第三方库:Pillow
和os
,如果你已经安装了Python,可以通过以下命令安装这两个库:
pip install Pillow
pip install os
步骤二:准备数据
使用python进行图片分类,需要准备一个包含所有需要分类的图片的文件夹。在该文件夹中,每个图片都需要有一个对应的标签,标签通常作为图片的命名规则来实现。
例如我们有一个文件夹images
,其中包含了几张图片:
- cat001.jpg
- dog001.jpg
- cat002.jpg
- dog002.jpg
对于这些图片,我们可以将它们按照分类标签划分到两个子文件夹cats
和dogs
中,不妨把cat
和dog
作为每张图片的分类标签。
步骤三:编写代码
下面是一个基本的Python脚本,它可以按照图片的分类标签将图片分别复制到cats
和dogs
文件夹中:
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技术站