1、等比例缩放图片
from PIL import Image
import os
def image(path,save_path):
for parent, dirnames, filenames in os.walk(path):
count=0
for filename in filenames:
iamge_path = os.path.join(parent, filename)
image_open = Image.open(iamge_path)
# 原始图像的宽度
pre_w = int(image_open.size[0])
pre_h = int(image_open.size[1])
print("原先像素宽为%d,高为%d"%(pre_w,pre_h))
# 长度固定,按照等比进行缩放
now_w = 1200
now_h = int((now_w * pre_h)/pre_w)
# 长与宽固定
# now_w = 1219
# now_h = 789
new_image = image_open.resize((now_w, now_h), Image.ANTIALIAS)
save_path_=os.path.join(save_path,filename)
new_image.save(save_path_)
count+=1
print("总共%d张图像,目前第%d张处理完毕"%(len(filenames),count))
if __name__ == '__main__':
path=r"F:\image\8\dianzi\未标记"
save_path=r"F:\image\8\dianzi\郭庆汝标注11500~14578"
image(path,save_path)
2、图像旋转角度、转RGB
from PIL import Image
import os
def change_agle(path):
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
image_path=os.path.join(parent,filename)
image_open = Image.open(image_path).convert("RGB")
w,h = image_open.size
print(filename,"宽度为:",w,"高度为:",h)
if w<h:
image_transpose = image_open.transpose(Image.ROTATE_90)
image_transpose.save(image_path)
print("%s被翻转了-----"%(filename))
else:
pass
def rename(path,save_path_):
exts = ['jpg', 'png', 'jpeg', 'JPG', 'PNG']
count=0
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
for ext in exts:
if filename.endswith(ext):
image_path = os.path.join(parent, filename)
image = Image.open(image_path).convert("RGB")
new_name="a"+str(count).zfill(9)+".jpg"
save_path=os.path.join(save_path_,new_name)
image.save(save_path)
print("图片总量为----%d张,当前处理----第%d张,文件名为------%s"%(len(filenames),count,new_name))
count+=1
else:
continue
if __name__ == '__main__':
path=r"F:\image\8\pupiao\普票_rename(未缩放) - 副本"
save_path=r"F:\image\8\pupiao\temp"
change_agle(path)
# rename(path,save_path)
3、读取xml文件
"""
python 读取xml文件内容并完成修改
"""
import os
import xml.etree.ElementTree as ET
from xml.dom.minidom import parse
# 方式一读取xml文件
def byfinall(inputpath):
listdir = os.listdir(inputpath)
for file in listdir:
if file.endswith("xml"):
file = os.path.join(inputpath, file) # 拼接完整路径
tree = ET.parse(file) # 加载xml文件,获取xml树对象
root = tree.getroot() # 获取根节点
tag_name = root.tag # .tag 得到标签的名称
print("输出根节点的名称:",tag_name)
for object in root.findall("object"): # 相关信息在object中,所以需要先找到object
for name_object in object.findall("name"): # 获取到name标签的对象
print("name标签的文本内容:",name_object.text)
print("**"*10)
for object in root.findall("object"):
name_obj = object.findall("name") # 返回的是一个list
name_text = name_obj[0].text # 得到name文本
print("%s类别的坐标为:..."%(name_text))
# print("%s类的位置坐标为。。。。" % (name_objs[0].text))
for bndbox_object in object.findall("bndbox"):
children_node = bndbox_object.getchildren() # 得到标签对象的孩子(返回的是一个列表)
xmin_text = children_node[0].text
ymin_text = children_node[1].text
xmax_text = children_node[2].text
ymax_text = children_node[3].text
print("xmin:",xmin_text,"ymin:",ymin_text,"xmax:",xmax_text,"ymax:",ymax_text)
# 方式二读取xml文件
def loop_read_xml(file_path):
domTree = parse(file_path)
# 得到文档的根元素
rootNode = domTree.documentElement
print(rootNode.nodeName)
# 所有的object节点
objects = rootNode.getElementsByTagName("object")
print("*****所有的坐标信息*****")
for object in objects:
bndbox_objs= object.getElementsByTagName("bndbox")
for bndbox_obj in bndbox_objs:
xmin_ = bndbox_obj.getElementsByTagName("xmin")[0]
ymin_ = bndbox_obj.getElementsByTagName("ymin")[0]
xmax_ = bndbox_obj.getElementsByTagName("xmax")[0]
ymax_ = bndbox_obj.getElementsByTagName("ymax")[0]
print("xmin_:",xmin_.nodeName)
# 注意:xmin_.firstChild.nodeName 得到是是其#txt
print("xmin_:",xmin_.firstChild.data,"ymin_:",ymin_.firstChild.data,"xmax_:",xmax_.firstChild.data,"ymax_:",ymax_.firstChild.data)
if __name__ == '__main__':
# 方式一读取xml文件
inputpath=r"D:\project\CHINESE-OCR\data"
byfinall(inputpath)
# 方式二读取xml文件
# file_path=r"E:\pycharm_pro\idcard_project\gr_utils\about_xml\xml_file\I01T02_000001.xml"
# loop_read_xml(file_path)
4、文件重命名
import os
dir=r"F:\image\8\pupiao"
rename_dir=r"F:\image\普票_rename"
listdir = os.listdir(dir)
count=0
for name in listdir:
image_path = os.path.join(dir, name)
name="puzhuan_"+str(count).zfill(9)+".jpg"
new_name = os.path.join(rename_dir, name)
count+=1
os.rename(image_path,new_name)
print(name,"处理完毕")