本文和大家分享的主要是python中使用Pillow(PIL)对图像操作相关内容,一起来看看吧,希望对大家学习python有所帮助。
颜色与RGBA值
计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值。在Pillow中,RGBA的值表示为由4个整数组成的元组,分别是R、G、B、A。整数的范围0~255。RGB全0就可以表示黑色,全255代表黑色。可以猜测(255, 0, 0, 255)代表红色,因为R分量最大,G、B分量为0,所以呈现出来是红色。但是当alpha值为0时,无论是什么颜色,该颜色都不可见,可以理解为透明。
from PIL import ImageColor
print(ImageColor.getcolor('red', 'RGBA'))# 也可以只以RBG的方式查看
print(ImageColor.getcolor('black', 'RGB'))
(255, 0, 0, 255)
(0, 0, 0)
图像的坐标表示
图像中 左上角 是坐标原点(0, 0),这和平常数学里的坐标系不太一样。这样定义的坐标系意味着,X轴是从左到右增长的,而Y轴是从上到下增长。
在Pillow中如何使用上述定义的坐标系表示一块矩形区域?许多函数或方法要求提供一个矩形元组参数。元组参数包含四个值,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底) 。右和底坐标稍微特殊,表示直到但不包括。可以理解为 [左, 右) 和 [顶, 底) 这样左闭右开的区间。比如(3, 2, 8, 9)就表示了横坐标范围[3, 7];纵坐标范围[2, 8]的矩形区域。
使用Pillow操作图像
了解了一些基础知识,可以上手了。首先从读取图片开始,很多图像处理库(如opencv)都以imread() 读取图片。Pillow中使用 open 方法。
from PIL import Image
im_path = r'F:\\Jupyter Notebook\\csv_time_datetime_PIL\\rabbit.jpg'
im = Image.open(im_path)
width, height = im.size# 宽高
print(im.size, width, height)# 格式,以及格式的详细描述
print(im.format, im.format_description)
im.save(r'C:\\Users\\Administrator\\Desktop\\rabbi