from PIL import Image import numpy as np #PIL即Python Image Library,也即我们所称的Pillow,比opencv更轻巧 #图像读写:PIL读入的是一个对象,而不是numpy矩阵 img = Image.open('figures/img_1.jpg') print(img.format) #图片的压缩格式 -----> JPEG print(img.size) #省略了通道(w, h)维度的排序也不一样 ------>(854, 480) print(img.mode) #RGB模式,与opencv读入的格式(BGR)不同 -----> RGB img.show() #显示图像 #灰度图像的获取 #对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open() # 函数打开后,返回的图像对象的模式都是“RGB”。而对于灰度图像,不管其图像格式是PNG,还是 # BMP,或者JPG,打开后,其模式为“L” gray = Image.open('figures/img_1.jpg').convert('L') gray.show() #读取不到图片会抛出异常IOError,我们可以捕捉它,做异常处理 try: img2 = Image.open('figures/img_2.jpg') except IOError: print('Fail to load image!') #pillow读进来的图片不是矩阵,将图片转矩阵: arr = np.array(img) print(arr.shape) #输出矩阵的维度 -------> (480, 854, 3) print(arr.dtype) #数值类型 --------> unit8 print(arr) #数组 #存储图片 #矩阵转为图片 new_img = Image.fromarray(arr) new_img.save('img_3.png') #图像操作: #分离合并通道 r, g, b = img.split() img = Image.merge("RGB", (b, g, r)) #复制图片 img_4 = img.copy() #ROI获取 img_5 = Image.open('figures/img_1.jpg') roi = img_5.crop((0, 0, 300, 300)) #(左上x,左上y,右下x,右下y)坐标 roi.show()
python PIL(pillow)图像库的一些基础操作
最新推荐文章于 2024-01-11 21:36:21 发布