今天因工作需要写了个小程序,用于在图片集中自动抽取需要的照片。该程序只是实现了基本功能,还有很多需要完善的地方,展示出来算是给自己鼓鼓气吧。
该程序应用有一定特殊条件,因我选择的图片集是工业生产过程中自动拍摄生成的,因而其文件名很有规律,所以便于操作。
程序使用说明:
1. 需要Python编辑器来运行该程序, 而且需要将程序文件和需要的几个文件夹和.csv文件放在同一目录下,这样运行速度比较快
2. 文件夹original_el 用于存放所有原始图片集,picked_el 用于存放找到的图片, sn.csv文件用于存放需要查找图片的名称
程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#_*_coding:utf-8_*_
'''
Version V17.1.0
Date 2017-10-15
@Author Cheney
'''
# 收集EL 图片集中需要的图片,在elpick目录下进行
from PIL import Image
import csv
import os
# 获取需要图片的文件名
def readImageName():
# 在elpick目录下读取sn.scv文件,该文件读取出来后元素是list 需要转换为str
get_csv = csv.reader( open ( "elpick/sn.csv" ))
origSN = []
transSN = []
for sn in get_csv:
origSN.append(sn)
tempList = origSN
# 读取csv文件获时获取到的列表,其元素也是列表,需要将其转换为字符串元素,使用下面for语句实现
for s in tempList:
# 去掉列表元素中的[''] 这几个字符
s = str (s).strip( '[\'' )
s = str (s).strip( '\']' )
transSN.append(s)
ImageName = transSN
return ImageName
pickImageName = readImageName()
# 遍历所有图片集的文件名
for image in os.listdir( "elpick/original_el" ):
# 将读取到的文件名进行处理,去扩展名,若是int文件名需要对文件名进行int 处理
imageName = image.strip( ".jpg" )
# 比较判断 若遍历的文件名在需要收集的列表中,读取之后并保存到pick_el文件夹下
if imageName in pickImageName:
pickImage = Image. open (( 'elpick/original_el/%s.jpg' ) % imageName)
pickImage.save(( "elpick/picked_el/%s.jpg" ) % imageName)
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/cheney2000/article/details/78244814?utm_source=blogxgwz8