如何批量提取不同文件夹下的图片并随机重命名

这篇具有很好参考价值的文章主要介绍了如何批量提取不同文件夹下的图片并随机重命名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题提出:

无论是在为了跑深度学习模型而准备数据集,还是其他的一些用途,相信大家都会遇到一个问题:我所需要的图片分布在很多不同的文件夹下,但我不需要这么多文件夹,那么我如果要使用这些图片的话,就需要把这些文件夹下的图片一个个提取出来,然后再放到新建的文件夹下,有时如果文件夹下的图片是按照顺序命名的,比如001.jpg......089.jpg等等,那么将他们放到一个文件夹下还面临文件名重复需要重命名的问题。(比如我需要将deepfashion2数据集的图片提取一部分放到我的文件夹下,就面临以上问题)

那如何将这些图片批量提取并重新放到新的文件夹下呢?

解决方法:

1.首先,需要先新建一个文件夹,存放我们的n个小文件夹:

 比如我新建一个zhao-sweater,里面是我需要提取照片的子文件夹

批量提取文件夹中的图片,python,算法,深度学习,图像处理,计算机视觉

 文章来源地址https://www.toymoban.com/news/detail-521122.html

 2.之后我再创建一个Top文件夹,用来存放我提取之后的照片,

 3.运行代码:

import os
import  re
import shutil,random


def get_allfile(path):  # 获取所有文件
    all_file = []
    for f in os.listdir(path):  # listdir返回文件中所有目录
        f_name = os.path.join(path, f)
        all_file.append(f_name)
    return all_file


def moveFile(fileDir, tarDir):
    pathDir = os.listdir(fileDir)  # 取图片的原始路径
    for name in pathDir:

        s=fileDir.split('D://桌面//zhao-sweater\\')[1]#要提取图片的主文件夹
        shutil.move(fileDir +"//"+name, tarDir+"//"+s+"_"+name)


def read_directory(train_save_path,val_path,fw,fw1):
    train_fileslist = os.listdir(train_save_path)
    val_fileslist=os.listdir(val_path)
    train_sort_num_list = []
    val_sort_num_list = []
    for file in train_fileslist:
        if file.__contains__("jpg"):
            train_sort_num_list.append(int(file.split('Datacluster Fire and Smoke Sample (')[1].split(').jpg')[0]))  # 去掉前面的字符串和下划线以及后缀,只留下数字并转换为整数方便后面排序
            train_sort_num_list.sort()  # 然后再重新排序
    for file in val_fileslist:
        if file.__contains__("jpg"):
            val_sort_num_list.append(int(file.split('Datacluster Fire and Smoke Sample (')[1].split(').jpg')[0]))  # 去掉前面的字符串和下划线以及后缀,只留下数字并转换为整数方便后面排序
            val_sort_num_list.sort()  # 然后再重新排序
    i=0
    j=0
    for filename in os.listdir(train_save_path):
            if filename.__contains__("jpg"):
                fw.write(train_save_path+"//"+"Datacluster Fire and Smoke Sample ("+str(train_sort_num_list[i])+")"+'\n')
                i=i+1;
    for filename in os.listdir(val_path):
        if filename.__contains__("jpg"):
            fw1.write(val_path + "//"+"Datacluster Fire and Smoke Sample ("+str(val_sort_num_list[j])+")" + '\n')
            j=j+1
if __name__ == '__main__':
    train_path = "D://桌面//zhao-sweater"
    all_file = get_allfile(train_path)  # tickets要获取文件夹名
    onetarDir="D://桌面//Top"#提取之后的文件存放位置
    if not os.path.exists(onetarDir):
        os.makedirs(onetarDir)
    for i in all_file:
        moveFile(i,onetarDir)






 

我们只需要更改三处位置:

s=fileDir.split('D://桌面//zhao-sweater\\')[1]#要提取图片的主文件夹
train_path = "D://桌面//zhao-sweater"#还是主文件夹的路径
onetarDir="D://桌面//Top"#提取之后的文件存放位置

 

4.提取成功!

批量提取文件夹中的图片,python,算法,深度学习,图像处理,计算机视觉

 

到了这里,关于如何批量提取不同文件夹下的图片并随机重命名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包