PIL拷贝,剪切,缩放 格式转换笔记

本文详细介绍了使用Python的PIL库进行图片处理的方法,包括图片拷贝、裁剪、缩放等基本操作,并展示了如何从一张原始图片生成多种尺寸的图标。此外,还涉及了OpenCV图像与PIL之间的转换及PyTorch的预处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

PIL安装

图片拷贝:

图片裁剪 

图像缩放:

opencv转pil,pytorch预处理:


PIL安装

PIL、Pillow安装使用方法_AI视觉网奇的博客-优快云博客

图片拷贝:

from PIL import Image
im1 = Image.open("jing.jpg")
im2 = im1.copy()
im2.save("he.jpg")

图片裁剪 

from PIL import Image 
im1 = Image.open("1.jpg") 
region = (50,50,100,100) #裁切图片 
cropImg = im1.crop(region) 
cropImg.show() 
​​​​​​​im1.show()

图像缩放:

在pillow中图片的缩放有两种方式,1.使用resize函数,2,使用thumbnail函数

resize函数可以缩小,也可以放大

thumbnail只能缩小,不能放大

所以,如果你只打开一次图片,要存出多个尺寸的话,要么,从大到小开始缩放。

要么,使用resize.建议从大到小开始缩放,因为,使用resize放大的话,你可以想象那个马赛克。当然,你也可以设置缩放图片的质量( PIL.Image.NEAREST:最低质量, PIL.Image.BILINEAR:双线性,

PIL.Image.BICUBIC:三次样条插值,Image.ANTIALIAS:最高质量)

下面,介绍一个简单的实际应用---多种尺寸icon的存储:

# -*- coding: utf-8 -*-  
import os,sys  
from PIL import Image  
  
image_size = [512,256,144,140,128,120,108,100,88,72,48,32,28]  
def create_icon():  
     for size in image_size:  
          '''''pri_image = Image.open("icon.png") 
          pri_image.thumbnail((size,size)) 
          image_name = "icon_%d.png"%(size) 
          pri_image.save(image_name)'''  
          pri_image = Image.open("icon.png")  
          pri_image.resize((size,size),Image.ANTIALIAS ).save("icom_%d.png"%(size))  
if __name__ == "__main__":  
     create_icon()  

在使用PIL image处理图像要获取高质量的关键地方是下面两点: 处理时要用 ANTIALIAS; 保存时是要设置 quality;

在python ide 可以这样处理:

im.resize(box, Image.ANTIALIAS)

im.save(path, 'JPEG', quality = 95)

opencv转pil,pytorch预处理:

opencv是以bgr格式读取的,转为pil后,也是bgr格式,pil显示会不正常。

import cv2
from PIL import Image
from torchvision import transforms

if __name__ == '__main__':

    img_o=cv2.imread(r'F:\project\shida\small\imgs\0a82210d-6155-4627-af8c-931a60fd6fd1_0_10_0.jpg')

    img=Image.fromarray(img_o)

    img.show()
    cv2.imshow('img', img_o)
    cv2.waitKey()
    transform_val_list = transforms.Compose([transforms.ToTensor()])

    img = transform_val_list(img)

    print(img[0][:10])

    img = transform_val_list(img_o)

    print(img[0][:10])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值