Python简易处理图片代码
Python简易处理图片代码
python翻转图片代码
代码1:(旋转单一图片)
# -*- coding:utf8 -*-
from PIL import Image
def change_photos(head_name, photo_path):
path = 'C:\\Users\\username\\Desktop\\test\\' #保存图片路径,可自行定义
im = Image.open(photo_path) #打开图片路径
im_rotate = im.rotate(-90, expand=1)
im_rotate.save(path + head_name + '.jpg')
change_photos("a" , 'C:\\Users\\username\\Desktop\\test\\save__abc.jpg__2.png')
首先导入Image库
im = Image.open(photo_path)
photo_path是图片的完整路径
im_rotate = im.rotate(-90, expand=1)
表示旋转-90°,expand=1表示原图直接旋转
im_rotate.save(path + head_name)
sava()里面需要完整路径,代表旋转后的图保存在哪里
代码2:(批量旋转)
# -*- coding: UTF-8 -*-
import glob
import os
from PIL import Image
output_path = 'output' # 输出文件夹名称
img_list = []
img_list.extend(glob.glob('*.png')) # 所有png图片的路径
img_list.extend(glob.glob('*.jpg')) # 所有jpg图片的路径
print(img_list) # 打印查看是否遍历所有图片
for img_path in img_list:
img_name = os.path.splitext(img_path)[0] # 获取不加后缀名的文件名
print(img_name) # 打印查看文件名
im = Image.open(img_path)
im = im.convert("RGB") # 把PNG格式转换成的四通道转成RGB的三通道
im_rotate = im.rotate(90, expand=1) # 逆时针旋转90度,expand=1表示原图直接旋转
# 判断输出文件夹是否已存在,不存在则创建。
folder = os.path.exists(output_path)
if not folder:
os.makedirs(output_path)
# 把旋转后的图片存入输出文件夹
im_rotate.save(output_path + '/' + img_name+'_rotated'+'.jpg')
print('所有图片均已旋转完毕,并存入输出文件夹')
python纵向分割图片代码
# -*- coding:utf8 -*-
#python install pillow
import os
from PIL import Image
#分割图片
def cut_image(image,count):
width, height = image.size
#item_width = int(width / count)
#item_height = height
item_width = width
item_height = int(height / count)
box_list = []
# (left, upper, right, lower)
for i in range(0,count): #保存所有图像
box = (0,i*item_height,item_width,(i+1)*item_height)
box_list.append(box)
image_list = [image.crop(box) for box in box_list]
return image_list
#保存分割后的图片
def save_images(image_list,dir_name,file_name):
index = 1
for image in image_list:
image.save(dir_name+'__'+ file_name+'__' + str(index) + '.png', 'PNG')
index += 1
if __name__ == '__main__':
rootdir = "C:/Users/username/Desktop"
file_name = "abc.jpg"
#获取rootdir目录下的文件名清单
#list=os.listdir(rootdir)
#for i in range(0,len(list)): #遍历目录下的所有文件夹
#dir_path=os.path.join(rootdir,list[i]) #文件夹的路径
#if os.path.isdir(dir_path): #判断是否为文件夹
#dir_name=list[i] #获得此文件夹的名字
#files=os.listdir(dir_path) #遍历此文件夹下的所有文件
#for file_name in files:
file_path=os.path.join(rootdir,file_name) #文件的路径(图片保存的地址)
image = Image.open(file_path) #读取一张图片
image_list = cut_image(image,3) #纵向分割图片为三份
save_images(image_list,"save",file_name) #保存分割后的图片
更改XML中某一个字段的值
如VOC标注文件下的xml中的difficult字段,将1变为0:
import os
import os.path
from xml.etree.ElementTree import parse, Element
def changeName(xml_fold, origin_name, new_name):
'''
xml_fold: xml存放文件夹
origin_name: 原始名字,比如弄错的名字,原先要cow,不小心打成cwo
new_name: 需要改成的正确的名字,在上个例子中就是cow
'''
files = os.listdir(xml_fold)
cnt = 0
for xmlFile in files:
file_path = os.path.join(xml_fold, xmlFile)
dom = parse(file_path)
root = dom.getroot()
for obj in root.iter('object'):#获取object节点中的name子节点
tmp_name = obj.find('difficult').text
if tmp_name == origin_name: # 修改
obj.find('difficult').text = new_name
print("change %s to %s." % (origin_name, new_name))
cnt += 1
dom.write(file_path, xml_declaration=True)#保存到指定文件
print("有%d个文件被成功修改。" % cnt)
if __name__ == "__main__":
changeName(r'C:\Users\XXX\Desktop\DSSD-master\DSSD-master\data\pzq\voc\VOCdevkit\VOC2007\Annotations',
'1',
'0')
待续
参考博客:
https://www.jianshu.com/p/411321399a2f
https://blog.csdn.net/weixin_39450145/article/details/105129363