Python 3 的图像库
Posted
技术标签:
【中文标题】Python 3 的图像库【英文标题】:Image library for Python 3 【发布时间】:2011-04-23 05:11:06 【问题描述】:python-3 使用什么代替 PIL 来处理图像?
【问题讨论】:
你检查媒体模块了吗? (导入媒体) @inspectorG4dget: 媒体不在python3的标准库中 我也不认为 PIL 是标准的。但看起来我错了 @inspectorG4dget:不,你是对的,PIL 不在标准库中。 应该从 PyPI 安装Pillow
,它应该是 PIL
的替代品;这也是 Python 2 上的首选包。
【参考方案1】:
“友好的 PIL 分支”Pillow 适用于 Python 2 和 3。查看Github project 以获得支持矩阵等。
【讨论】:
2014年10月是still actively being developed,has a nice doc,你可以pip3 install Image
(我用枕头不知道),you from PIL import Image
。它现在还支持all the major platforms。在为 python3 寻找 PIL 时,这绝对是首选。【参考方案2】:
Christoph Gohlke 设法为最高 3.3 的 python 版本构建 PIL(仅适用于 Windows):http://www.lfd.uci.edu/~gohlke/pythonlibs/
我用 Python 3.2 尝试了他的 PIL 版本,以及图像打开/创建/像素操作/保存所有工作。
【讨论】:
【参考方案3】:Qt 非常适用于图形。在我看来,它比 PIL 更通用。
您可以获得图形处理所需的所有功能,但还有矢量图形,甚至支持真实打印机。所有这些都在一个统一的 API 中,QPainter
。
要使用 Qt,您需要一个 Python 绑定:PySide 或 PyQt4。 它们都支持 Python 3。
这是一个加载 JPG 图像的简单示例,在坐标 (20, 20) 处绘制一个半径为 10 的抗锯齿圆,其像素的颜色为在这些坐标处,并将修改后的图像保存为 PNG 文件:
from PySide.QtCore import *
from PySide.QtGui import *
app = QCoreApplication([])
img = QImage('input.jpg')
g = QPainter(img)
g.setRenderHint(QPainter.Antialiasing)
g.setBrush(QColor(img.pixel(20, 20)))
g.drawEllipse(QPoint(20, 20), 10, 10)
g.end()
img.save('output.png')
但请注意,这个解决方案相当“重量级”,因为 Qt 是一个用于制作 GUI 应用程序的大型框架。
【讨论】:
【参考方案4】:截至 2012 年 3 月 30 日,我已尝试在 GitHub 上获取 sloonz fork 以打开图像,但未能成功。我让它编译好了,但它实际上并没有工作。我还尝试构建 gohlke 的库,它也编译但无法打开任何图像。上面有人提到了 PythonMagick,但它只能在 Windows 上编译。见PythonMagick on the wxPython wiki。
PIL 最后一次更新是在 2009 年,虽然它的网站上说他们正在开发 Python 3 端口,但已经 3 年了,邮件列表已经冷了。
为了解决我的 Python 3 图像处理问题,我使用 subprocess.call()
来执行 ImageMagick shell 命令。这个方法有效。
见the subprocess module documentation。
【讨论】:
【参考方案5】:您可以在 Python 3 上使用我的包 mahotas。它是基于 numpy 而不是基于 PIL。
【讨论】:
【参考方案6】:你想要 Pillow 库,这里是如何在 Python 3 上安装它:
pip3 install Pillow
如果这对您不起作用(应该),请尝试正常的pip
:
pip install Pillow
【讨论】:
【参考方案7】:根据需要,scikit-image 可能是最佳选择,其操作远远超出了 PIL 和当前版本的 Pillow。维护得很好,至少和枕头一样多。此外,底层数据结构来自 Numpy 和 Scipy,这使得其代码具有难以置信的互操作性。枕头不能处理的例子:
您可以在gallery 中看到它的强大功能。 This paper 提供了很好的介绍。祝你好运!
【讨论】:
【参考方案8】:如果您使用的是 Python3,您还可以使用在 Python 2 和 3 中工作的库 PILasOPENCV。函数 api 调用与 PIL 或枕头中的相同,但在内部它与 OpenCV 和 numpy 一起使用来加载、保存和操作图像。查看https://github.com/bunkahle/PILasOPENCV 或使用 pip install PILasOPENCV 安装它。并非所有 PIL 函数都经过仿真,但最常见的函数都可以工作。
【讨论】:
以上是关于Python 3 的图像库的主要内容,如果未能解决你的问题,请参考以下文章
windows下Python 3.x图形图像处理库PIL的安装