Python实现图片裁剪的两种方式(Pillow和OpenCV)
本文详细介绍利用Python进行图片裁剪的两种主流方式:Pillow和OpenCV。通过对比两者在读取图片、获取尺寸信息(shape与size)、定义裁剪坐标及保存结果上的代码差异,帮助开发者快速掌握基于数组切片和crop方法的图像裁剪技巧,适用于各类Python图像处理场景。
Python图片裁剪概述
本文探讨在Python中实现图片裁剪的两种常用方法,分别基于Pillow库和OpenCV库。这两种方案均只需编写少量代码即可完成任务,这也正是Python在图像处理领域广受欢迎的原因之一。
首先,我们需要一张原始图片作为处理对象,具体示例如下图所示:

原始图片
使用OpenCV进行裁剪
接下来,展示如何使用OpenCV库对图片进行裁剪操作,相关代码如下:
import cv2
img = cv2.imread("./data/cut/thor.jpg")
print(img.shape)
cropped = img[0:128, 0:512] # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite("./data/cut/cv_cut_thor.jpg", cropped)
代码首先通过imread方法加载待裁剪的图片,并打印其shape属性。输出结果显示为(1080, 1920, 3),该元组的顺序依次代表高度、宽度以及通道数。随后,利用数组切片功能提取目标区域。需注意,切片坐标[y0:y1, x0:x1]表示在原图坐标系下的范围,其中原图左上角为坐标原点。最后,调用cv2.imwrite()函数将裁剪后的图像保存至本地,参数分别为文件名和图像对象,效果如图所示:

OpenCV裁剪所得图片
使用Pillow进行裁剪
随后,介绍使用Pillow库进行图片裁剪的方法,具体代码示例如下:
from PIL import Image
img = Image.open("./data/cut/thor.jpg")
print(img.size)
cropped = img.crop((0, 0, 512, 128)) # (left, upper, right, lower)
cropped.save("./data/cut/pil_cut_thor.jpg")
首先使用open方法加载图片,并通过size属性查看其尺寸。与OpenCV的shape不同,size输出的(1920, 1080)分别代表宽度和高度。接着,调用crop方法进行裁剪,该方法要求传入一个box参数,该参数为四元组(left, upper, right, lower),依次指定裁剪区域在原图中的左、上、右、下坐标值。最后,使用save方法保存裁剪结果。如图所示,Pillow同样能够高效完成与OpenCV相同的裁剪任务:

Pillow裁剪所得图片
以上内容涵盖了Python中利用Pillow和OpenCV进行图片裁剪的核心步骤与代码示例,希望能为读者的学习提供有益参考,欢迎继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













