Python图像处理:读取、转换格式与调整大小

9 下载量 16 浏览量 更新于2023-03-03 收藏 28KB PDF 举报
"这篇文章主要介绍了如何使用Python读取图片并修改其格式和大小。通过使用PIL(Python Imaging Library)和OpenCV库,我们可以轻松实现这些功能。文章提供了一个具体的代码示例,演示了如何遍历指定目录下的图片,读取它们,然后将图片尺寸调整为50x50像素,并保存为新的格式。" 在Python编程中,处理图像是一项常见的任务。本文主要讲解了使用Python进行图像处理的两种关键库:PIL和OpenCV。PIL库主要用于图像的读取、修改和保存,而OpenCV则是一个强大的计算机视觉库,支持多种图像处理操作。 首先,导入必要的库: ```python from PIL import Image import os import cv2 import numpy as np ``` 其中,`PIL.Image`用于图像处理,`os`用于文件操作,`cv2`是OpenCV库,`numpy`用于处理数组数据。 接下来,定义一个函数`read_image`,用于遍历目录中的图片。虽然在提供的代码片段中,这个函数没有被调用,但它的存在表明作者原本打算实现一个递归遍历子目录的功能。 实际操作图片的代码段如下: ```python root_path = r"/test/9/" # 操作文件路径 for root, dirs, files in os.walk(root_path): for file in files: srcImg = cv2.imread(root_path + "/" + str(file)) # 使用OpenCV读取图片 img = Image.open(root_path + "/" + str(file)) # 使用PIL打开图片 newImg = img.resize((50, 50), Image.BILINEAR) # 调整图片大小到50x50像素,使用双线性插值方法 cv2.imwrite(r'./img2/' + str(file), newImg) # 使用OpenCV保存调整大小后的图片 ``` 这段代码首先定义了要操作的图片目录`root_path`,然后使用`os.walk`遍历该目录及其子目录下的所有文件。对于每个文件,使用`cv2.imread`读取图片到`srcImg`,接着使用`Image.open`再次打开图片,这次是为了使用`resize`方法改变图片尺寸。`resize`接受一个元组作为参数,表示新尺寸,第二个参数`Image.BILINEAR`指定使用双线性插值,这是一种平滑缩放的方法,以减少缩放过程中的像素失真。最后,使用`cv2.imwrite`将处理后的图片保存到新的目录`./img2/`下。 在这个过程中,OpenCV和PIL结合使用,OpenCV用于读取和保存图片,PIL用于图片尺寸的调整。这样的组合可以灵活地处理各种图像操作,同时利用两个库的优点。本文的代码示例对于初学者理解Python在图像处理方面的应用非常有帮助,同时也展示了如何将不同库的功能结合起来解决实际问题。