图片数据处理
Posted tan-wm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片数据处理相关的知识,希望对你有一定的参考价值。
处理GTSRB的原始数据集,遍历图片文件,对图片进行裁剪,并保存到指定文件夹,通过这次练习,对os.path(), os.walk()等一些API有了一定了解,
处理后的数据作为接下来制作TFFrecords文件提供材料
1 # -*- coding: utf-8 -*- 2 3 from PIL import Image 4 import os 5 import re 6 7 # 获取当前路径(不光以下的方法,还有其它方法,如os.getcwd()) 8 cur_path = os.path.abspath(os.curdir) 9 # print(cur_path) 10 11 new_dir = [‘test_file_dir‘, ‘train_file_dir‘] 12 for dir in new_dir: 13 dir = os.path.join(cur_path, dir) 14 if os.path.exists(dir): # 否则会报错 15 pass 16 else: 17 os.mkdir(dir) 18 19 # resize后的大小 20 width = 128 21 height = 128 22 23 test_source_dir = ‘E:CVVGGnetGTSRB_Final_Test_ImagesGTSRBFinal_TestImages‘ 24 train_source_dir = ‘E:CVVGGnetGTSRB_Final_Training_ImagesGTSRBFinal_TrainingImages‘ 25 26 # 处理测试集 27 # with open(‘GTSRB_Final_Test_ImagesGT-final_test.test.csv‘) as file: 28 with open(test_source_dir + ‘GT-final_test.test.csv‘, ‘r‘) as file: 29 print(‘lala‘) 30 content = [] 31 i = 0 32 for line in file: 33 print(line) 34 i += 1 35 if i == 1: 36 continue 37 content = content + line.split(‘;‘) 38 print(content) 39 pic = Image.open(test_source_dir + ‘\‘ + content[0]) # 如果使用os.path.join()的话,中间不用加‘\‘ 40 pic = pic.crop((float(content[3]), float(content[4]), float(content[5]), float(content[6][:-1]))) # content[6]里有一个换行符 41 # 调整图像大小(Image.BILINEAR指定采用双线性法对像素点插值) 42 pic.resize((width, height), Image.BILINEAR).save(r‘%s\%s.jpg‘ % (os.path.join(cur_path, new_dir[0]), content[0][0:-4])) 43 content[:] = [] 44 45 # 处理训练集 46 47 # dirs, files分别是子文件夹和文件的名称的list,注意不是路径!!! root即walk()里的路径 48 for (root, dirs, files) in os.walk(train_source_dir): # os.walk()不返回任何东西,不能用=号, 只能用for...in...的方式获得 49 for sub_dir in dirs: 50 new_folder = os.path.join(cur_path, new_dir[1], sub_dir) 51 # print(new_folder) 52 if os.path.exists(new_folder): 53 pass 54 else: 55 os.mkdir(new_folder) 56 for (_, _, filename) in os.walk(os.path.join(root, sub_dir)): 57 for sub_file in filename: 58 if sub_file.endswith(‘.csv‘): 59 with open(os.path.join(root, sub_dir, sub_file), ‘r‘) as csv_file: 60 print(‘lala‘) 61 content = [] 62 i = 0 63 for line in csv_file: 64 print(line) 65 i += 1 66 if i == 1: 67 continue 68 content = content + line.split(‘;‘) 69 print(content) 70 pic = Image.open(os.path.join(root, sub_dir, content[0])) 71 pic = pic.crop((float(content[3]), float(content[4]), float(content[5]), 72 float(content[6]))) 73 # 调整图像大小(Image.BILINEAR指定采用双线性法对像素点插值) 74 pic.resize((width, height), Image.BILINEAR).save(r‘%s\%s.jpg‘ % (new_folder, content[0][0:-4])) 75 content[:] = []
以上是关于图片数据处理的主要内容,如果未能解决你的问题,请参考以下文章
Android - 应用程序启动时片段 onCreate 崩溃
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段