Python实现图片裁剪的两种方式(Pillow和OpenCV)

向北走
向北走
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍利用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进行图片裁剪的核心步骤与代码示例,希望能为读者的学习提供有益参考,欢迎继续支持本站获取更多技术内容。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。