讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

Laper
Laper

剧本策划到成片协作

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Python 图片处理的 Pillow vs OpenCV 选型

秋雪吖_8591

秋雪吖_8591

发布时间:2026-02-25 19:33:43

|

668人浏览过

|

来源于php中文网

原创

选 Pillow 还是 cv2 取决于具体需求:Pillow 适合常规格式读写、简单编辑和中文路径;cv2 更适合 OpenCV 算法、底层加速及批量 NumPy 操作,但部署复杂、通道处理易出错。

python 图片处理的 pillow vs opencv 选型

读写图片时选 Pillow 还是 cv2?Pillow 更适合常规格式(JPEG/PNG/GIF)的加载、保存和简单编辑;cv2.imread() 默认 BGR 通道顺序,且不原生支持 PNG 透明通道保存(会丢 alpha)。如果你只是缩放、转格式、加文字水印,Pillow 代码更直白、出错少。而 cv2 在读取 BMP、TIFF 或需要后续做 OpenCV 算法(如边缘检测、模板匹配)时才真正省事。
  • Pillow.Image.open() 返回 RGB 模式,cv2.imread() 返回 BGR NumPy 数组
  • 保存带 alpha 的 PNG:用 Pillow 直接 .save() 即可;用 cv2.imwrite() 必须手动拆通道、补 alpha,否则透明信息丢失
  • cv2 读取中文路径会报 error: (-215:Assertion failed) !_src.empty();Pillow 无此问题

做图像增强或批量预处理该用谁? 取决于你是否依赖 OpenCV 的底层加速或特定算子。比如对比度调整、高斯模糊、直方图均衡化,cv2 的实现通常更快且支持 in-place 操作;但像旋转、裁剪、颜色空间转换(RGB ↔ HSV),Pillow 的 API 更贴近直觉,且自动处理模式转换(如从 RGB 切到 L 模式再转回)。
  • Pillow 的 .rotate() 默认按中心旋转并扩展画布,cv2.warpAffine() 需手动构造旋转矩阵 + 设置输出尺寸
  • cv2.equalizeHist() 只接受单通道,对彩色图得先转 cv2.COLOR_BGR2YUV 再操作 Y 通道;Pillow.ImageOps.equalize() 可直接作用于 RGB 图(内部转灰度再映射)
  • 批量处理时,cv2 对 NumPy 数组的向量化操作更友好;但若原始数据来自文件流或 Web 请求,Pillow 的内存占用通常更低

cv2.cvtColor() 和 Pillow.Image.convert() 转颜色空间结果不一样? 不是“不一样”,是默认假设不同:cv2.cvtColor() 认为你传入的是 BGR(哪怕你读的是 PNG),而 Pillow.Image.convert() 始终以当前图像模式为准(通常是 RGB)。混用时容易出现颜色偏移——比如用 cv2.imread() 读图后直接送进 Pillow 处理,不先 cv2.cvtColor(img, cv2.COLOR_BGR2RGB),就会把蓝红通道颠倒。
  • Pillow 中 .convert('L') 是加权灰度(0.299R + 0.587G + 0.114B),cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 用的是同样系数,结果一致
  • 但 cv2.COLOR_RGB2HSV 和 Pillow.Image.convert('HSV') 不等价:Pillow 的 HSL/HSV 转换是近似实现,精度和范围(H∈[0,360])与 OpenCV(H∈[0,180])也不统一
  • 实际项目中,一旦选定一种库做颜色空间操作,就别中途切——尤其在训练数据预处理 pipeline 里,一致性比“哪个更准”重要得多

部署时发现 cv2 启动慢或 import 失败?cv2 是 C++ 编译模块,体积大、依赖多(尤其 FFmpeg、Intel IPP),在容器或 serverless 环境下容易因缺失系统库失败;Pillow 纯 Python + 少量 C 扩展,安装快、兼容性好。如果你的场景不需要实时视频流或复杂滤波,优先用 Pillow 可大幅降低部署复杂度。
  • cv2 在 Alpine Linux 上需额外装 opencv-python-headless,否则 import 报 ImportError: libglib-2.0.so.0: cannot open shared object file
  • Pillow 若提示 Decoder jpeg not available,说明没装系统级 JPEG 库(如 Debian 的 libjpeg-dev),重装前先 pip uninstall Pillow && pip install --no-cache-dir Pillow
  • 两者都支持 from PIL import Image 和 import cv2,但不要在同一项目里为同一张图反复来回转换——每次 np.array(pil_img) 或 PIL.Image.fromarray(cv2_img) 都有拷贝开销,小图不明显,批量千张以上就拖慢整体吞吐

实际选型时,最常被忽略的是「图像来源」和「下游消费方」:上游是 requests 二进制流还是本地路径?下游是喂给 PyTorch DataLoader 还是写入 S3?这些细节比“哪个功能多”更能决定用哪个库。

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3570

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

8103

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

9822

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

5167

2025.07.23

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1069

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3480

2023.10.25

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

7016

2023.08.14

pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

2543

2024.05.29

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn