pillow库,PIL库

PIL:Python Imaging Libaray  PIL库是python图像处理库

但是PIL仅仅支持到Python2.7,一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x

安装Pillow库:pip install pillow

但是导入包的时候还是:导入PIL这个库中的Image模块

import PIL
from PIL import Image

1.打开图片:Image.open()

from PIL import Image

image=Image.open(r"D:\4.jpg")

2.展示图片

from PIL import Image

image=Image.open(r"D:\4.jpg")

image.show()
 

 3.保存图片:

from PIL import Image

image=Image.open(r"D:\4.jpg")
image.save("D:\linzhiling.jpg")

4.输出图片的size和mode

(1)Rgb图像

from PIL import Image

image1=Image.open(r"D:\4.jpg")

print(image1.size)#(1680, 1050)
print(image1.mode)#RGB

(2)灰度图像

image2=Image.open(r"D:\2.jpg")

print(image2.size)#(457, 783)
print(image2.mode)#L

mode表示图片的模式,RGB表示彩色图像,L代表灰度图

size 属性为图片的大小(宽度,长度),无论是彩色图还是灰度图都是返回(xxx,xxx),也就是说不会返回通道数

5.rgb图和灰度图互相转化

(1)rgb图转化成灰度图

image1=Image.open(r"D:\4.jpg")

print(image1.size)#(1680, 1050)
print(image1.mode)#RGB

image2=image1.convert("L")
image2.show()

(2)灰度图转彩色图

image2=Image.open(r"D:\2.jpg")

print(image2.size)#(457, 783)
print(image2.mode)#L

image3=image2.convert("RGB")
print(image3.size)#(457, 783)
print(image3.mode)#RGB
image3.show()

和cv2库的灰度图一样,虽然转成了三通道的图,但是看起来还是和灰度图一摸一样

 6.图片缩放resize

image1=Image.open(r"D:\4.jpg")

print(image1.size)#(1680, 1050)
print(image1.mode)#RGB

image2=image1.resize((256,256))
image2.show()

7.图片旋转:

im = image.rotate(45)  # 逆时针旋转 45 度
im = image.transpose(Image.FLIP_LEFT_RIGHT) # 左右翻转
im = im.transpose(Image.FLIP_TOP_BOTTOM)# 上下翻转

8.对每个像素值进行操作

image1=Image.open(r"D:\4.jpg")

print(image1.size)#(1680, 1050)
print(image1.mode)#RGB

image2=image1.point(lambda i:i*5)#所有像素点都乘以5
image2.show()

原图:

 代码运行后:

 比较常见的应用是将一张0/1二值图变成0/255二值图:

比如这样一张图:

 运行下面代码后:

image2=Image.open(r"D:\Test.png")

print(image2.size)#(457, 783)
print(image2.mode)#L

image3=image2.point(lambda i:i*255)
image3.show()

得到:

 其他两种实现将一张0/1二值图变成0/255二值图的方法参见本人另一篇博客:一张单通道的二值图(0,1二值图)转化为单通道二值图(0,255)二值图_Pr Young的博客-CSDN博客

9. 图片和Numpy数组之间相互转化:

(1)图片转数组

image2=Image.open(r"D:\4.jpg")

print(image2.size)#(1680,1050)
print(image2.mode)#RGB

array = np.array(image2)
print(array.shape) #(1050, 1690, 3)

(2)数组转图片

image2=Image.open(r"D:\4.jpg")

print(image2.size)#(1680,1050)
print(image2.mode)#RGB

array = np.array(image2)
print(array.shape) #(1050, 1690, 3)

out = Image.fromarray(array)
out.show()

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值