图片数据处理

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[:] = []

 

以上是关于图片数据处理的主要内容,如果未能解决你的问题,请参考以下文章

根据图片的url地址下载图片到本地保存代码片段

Android - 应用程序启动时片段 onCreate 崩溃

CardView 不在披萨片段中显示图片

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

如何把视频片段做成动态图片

可以直接拿来用的15个jQuery代码片段