Python_文件移动

一,将文件夹中的文件按照标签文件val.txt分类

一次性创建多个文件夹,文件夹名字从0到42    mkdir {0..42}

参考  https://blog.csdn.net/rongxue2001/article/details/76861704?locationNum=10&fps=1

https://blog.csdn.net/qq_21997625/article/details/80679692

Final-test中包含各类图片   1-test/10存放标签为10的图片

 

# -*- coding: UTF-8 -*-
from PIL import Image
f1 = open('val.txt','r')
for line in f1.readlines():
    line = line.strip('\n')
    c_array=line.split(" ")
    #print(c_array[0])00027.jpg
    #print(c_array[1]) 图片类别 10
    if (c_array[1])=='10\r':

        #print('tru')
        #f2.write(c_array[0])
        #print(c_array[0])
        line3=line[0:5]#提取前5,图片名称
        #print(line3)
        im = Image.open('/home/xj/桌面/课题/所有代码/所有代码/Final-test/{}.jpg'.format(line3))
        im.save('/home/xj/桌面/课题/所有代码/所有代码/1-test/10/{}.jpg'.format(line3))
        #f2.write(line)  # 把查找到的行写入f2.
f1.close()

二,GTSRB数据集ROI感兴趣区域提取,根据csv表格中坐标

# -*- coding: utf-8 -*-
import os
import numpy as np
import PIL
import matplotlib.pyplot as plt
import pandas as pd
def convert_train_data(file_dir):
    root_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB/Final-' # 001', '00002', '00003', '00004', '00005', '00006',
    directories = [file for file in os.listdir(file_dir)  if os.path.isdir(os.path.join(file_dir, file))]
    for files in directories:
        path = os.path.join(root_dir,files)
        if not os.path.exists(path):
            os.makedirs(path)
        data_dir = os.path.join(file_dir, files)
        file_names = [os.path.join(data_dir, f) for f in os.listdir(data_dir)  if f.endswith(".ppm")]
        for f in os.listdir(data_dir):
            if f.endswith(".csv"):
                csv_dir = os.path.join(data_dir, f)
        csv_data = pd.read_csv(csv_dir)
        csv_data_array = np.array(csv_data)
        for i in range(csv_data_array.shape[0]):
            csv_data_list = np.array(csv_data)[i,:].tolist()[0].split(";")
            sample_dir = os.path.join(data_dir, csv_data_list[0])
            img = PIL.Image.open(sample_dir)
            box = (int(csv_data_list[3]), int(csv_data_list[4]), int(csv_data_list[5]), int(csv_data_list[6]))
            roi_img = img.crop(box)
            new_dir = os.path.join(path, csv_data_list[0].split(".")[0] + ".jpg")
            roi_img.save(new_dir, 'JPEG')
def convert_test_data(file_dir):
    root_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB (3)/Final-test'
    for f in os.listdir(file_dir):
        if f.endswith(".csv"):
            csv_dir = os.path.join(file_dir, f)
    csv_data = pd.read_csv(csv_dir)
    csv_data_array = np.array(csv_data)

    for i in range(csv_data_array.shape[0]):
        csv_data_list = np.array(csv_data)[i, :].tolist()[0].split(";")
        sample_dir = os.path.join(file_dir, csv_data_list[0])
        img = PIL.Image.open(sample_dir)
        box = (int(csv_data_list[3]), int(csv_data_list[4]), int(csv_data_list[5]), int(csv_data_list[6]))
        roi_img = img.crop(box)
        new_dir = os.path.join(root_dir, csv_data_list[0].split(".")[0] + ".jpg")
        roi_img.save(new_dir, 'JPEG')
if __name__ == "__main__":
    train_data_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB/Final_Training/Images'
    test_data_dir = '/home/xj/桌面/课题/所有代码/所有代码/GTSRB (3)/Final_Test/Images'
    convert_train_data(train_data_dir)
    convert_test_data(test_data_dir)

 

三 批量修改图像大小RGB-》批量灰度化且统一尺寸  ---https://blog.csdn.net/xxty1122/article/details/79406587

 

# -*- coding: utf-8 -*-
from skimage import io,transform,color
import numpy as np
def convert_gray(f,**args):#图片处理与格式化的函数
    rgb=io.imread(f)   #读取图片
    gray = color.rgb2gray(rgb)  # 将彩色图片转换为灰度图片
    dst = transform.resize(gray, (28, 28))  # 调整大小,图像分辨率为64*64
    return dst
datapath='/home/xj/桌面/课题/所有代码/所有代码/1-test/0'  #图片所在的路径
str=datapath+'/*.jpg'   #识别.jpg的图像
coll = io.ImageCollection(str,load_func=convert_gray)#批处理
for i in range(len(coll)):
    io.imsave('/home/xj/桌面/课题/所有代码/所有代码/1-test-huiduhua/0/' + np.str(i) + '.bmp', coll[i])  # 保存图片在d:/daate/date/

 四、深度学习中构造自己的数据集

参考

https://blog.csdn.net/Euadvancer/article/details/53312239

znyp_format-master数据集制作

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值