Python中PIL与OpenCV处理图片:读取、显示、裁剪及保存详解

山海之间
山海之间
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析Python中PIL和OpenCV库对图片的基本操作方法。涵盖从文件读取、窗口显示、获取尺寸与模式,到区域裁剪、缩放及保存等核心功能。通过对比两种库的代码实现,帮助开发者快速掌握图像预处理的关键步骤。

PIL库图像基础处理

在Python图像处理领域,PIL(Pillow)库提供了基础的图像操作接口,常用于简单的图像格式转换和基础属性获取。

使用PIL库读取图片时,需导入Image模块。通过调用即可将指定路径的图片加载到内存中,生成Image对象供后续处理。


img = Image.open(“a.jpg”)

若需快速预览图像,可直接调用。该方法会弹出系统默认的图片查看窗口展示图像。注意,若图像数据为numpy数组类型,需先通过Image.fromarray(nparr, mode='RGB')转换为Image对象后再显示。


im.show() # im是Image对象,im是numpy类型,通过Image.fromarray(nparr, mode='RGB')函数转换为Image对象

获取图像的尺寸信息是处理前的必要步骤。执行可解包得到图像的宽度和高度,分别赋值给width和height变量,便于后续进行坐标计算或缩放操作。


(width, height) = img.size

了解图像的通道模式有助于正确解析像素数据。通过可以获取图像的mode属性,常见的模式包括'RGB'(彩色)、'L'(灰度)等,这决定了后续处理时的数据格式。


mode = img.mode

PIL库支持对图像指定区域进行截取。使用函数,传入左上角(x1, y1)和右下角(x2, y2)坐标,即可提取指定矩形区域的图像内容,返回新的Image对象。


img_c = img.crop(x1,y1,x2,y2)

调整图像大小通常涉及缩放操作。调用并指定目标尺寸(size, size)及抗锯齿参数Image.ANTIALIAS,可将原图调整为指定分辨率,适用于图像预处理或缩略图生成场景。


img = img.resize((size,size), Image.ANTIALIAS)

处理完成后,需将结果持久化。执行可将Image对象保存至指定path路径。此外,PIL还支持ImageDraw模块进行绘图,例如通过imDrwa.rectangle((x1, y1, x2, y2), outline="red")绘制红色边框,最后通过img.show()预览带有标注的图像。


img.save(path)
ImageDraw

  imDrwa = ImageDraw.Draw(img)
  # boxes = [[10, 20, 129, 255],[126, 0, 221, 164]]
  imDrwa.rectangle((x1, y1, x2, y2), outline="red")
  img.show()

OpenCV库图像处理方法

OpenCV(cv2)是计算机视觉领域的常用库,其API设计与PIL不同,更侧重于算法处理和实时视频流操作,适合复杂的图像分析任务。

在OpenCV中读取图片使用cv2.imread()函数。该函数返回一个numpy数组,若路径错误或文件不存在,则返回None,因此实际开发中建议检查返回值以确保读取成功。


im = cv2.imread()

OpenCV显示图像需结合窗口管理函数。通过创建名为'image'的窗口并显示图像,随后调用cv2.waitKey(0)等待用户按键,最后使用cv2.destroyAllWindows()关闭所有OpenCV窗口,防止资源占用。


cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV调整图像大小使用cv2.resize()函数。如所示,传入源图像、目标尺寸(size, size)以及插值方法interpolation(如cv2.INTER_AREA适用于缩小图像),可高效完成缩放操作,保持图像质量。


img=cv2.resize(image,(size,size),interpolation = cv2.INTER_AREA)

保存图像时,OpenCV允许设置编码参数。执行可将图像保存为'1.jpg',并通过列表[int(cv2.IMWRITE_JPEG_QUALITY), 95]指定JPEG质量因子,默认值为95,数值越高图像质量越好但文件体积越大。


cv2.imwrite('1.jpg',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95]) # 默认95

上述内容总结了Python中PIL和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 算法库。