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

https://blog.csdn.net/DD_PP_JJ/article/details/102772793

posted @ 2022-04-24 13:22  Deceiver_Ker  阅读(669)  评论(0编辑  收藏  举报