python读图像函数 python图像处理

如何采用Python读取一个图像 我们可以用python实现很多功能,那么如何用python读取一个图像呢?下面我给大家分享一下 。
工具/材料
CMD命令行
01
首先按下Win+R组合键打开运行界面,输入CMD,如下图所示
02
接下来在弹出的CMD界面中导入Python的图像处理模块PIL,如下图所示
03
接下来利用PIL模块的open方法读取图像,只要在括号里传入图像地址即可,如下图所示
04
最后执行程序我们就可以看到程序自动调用图像识别软件进行图像的读取了,如下图所示
Python的各种imread函数在实现方式和读取速度上有何区别1. PIL.Image.open
代码在这里:Pillow/Image.py at 3.1.x · python-pillow/Pillow · GitHub
open() 函数打开图像,但并不读入,直到有操作发生 。
具体的读取操作是在 ImageFile.py 写的 。大体流程是先检测文件类型,整块地读入文件内容,然后调用解码器解码,做了很多优化,效率应该还是很高的 。
2. scipy.ndimage.imread
代码在这里:scipy/io.py at v0.17.1 · scipy/scipy · GitHub
imread 调用 scipy.misc.pilutil.imread 。从名字就能看出来其实调用的还是 Pillow 。
根据 pilutil 代码:scipy/pilutil.py at v0.17.1 · scipy/scipy · GitHub
确实是调用 pil.image.open() , 然后返回一个 fromimage() 。
3. scipy.misc.imread
misc 的 __init__.py 在这里:scipy/__init__.py at v0.17.1 · scipy/scipy · GitHub
调用的还是 pilutil 中的 imread
相关代码如下
try:
from .pilutil import *
from . import pilutil
__all__ += pilutil.__all__
del pilutil
except ImportError:
pass
也算是学了一招,从 pilutil 导入其所有函数添加到当前空间,然后又删除了 pilutil 消除影响 。
4. skimage.io.imread
代码在这里:scikit-image/_io.py at master · scikit-image/scikit-image · GitHub
是通过插件 plugin 来读入不同的文件,而且会试用几个不同的 plugins 来找到合适的 。
使用 call_plugin 来调用,代码在这里:scikit-image/manage_plugins.py at master · scikit-image/scikit-image · GitHub
可以根据如下代码查看插件调用的优先级
# For each plugin type, default to the first available plugin as defined by
# the following preferences.
preferred_plugins = {
# Default plugins for all types (overridden by specific types below).
'all': ['pil', 'matplotlib', 'qt', 'freeimage'],
'imshow': ['matplotlib'],
'imshow_collection': ['matplotlib']
}
plugins 的源代码在这里:scikit-image/skimage/io/_plugins at master · scikit-image/scikit-image · GitHub 。可以看到 pil 的 imread , 是用 open 打开图像之后,再转换成 ndarray 。
5. cv2.imread
这里是调用的 CV::imread() , 代码在这里:opencv/loadsave.cpp at master · opencv/opencv · GitHub 。一般来说 C\C++ 的实现,应该比 python 速度快一点 。
6. matplotlib.image.imread
matplotlib 的文档里面说,matplotlib 原生只可以读取 PNG 文件 , 有 PIL 的时候,可以读取其他类型的文件 。如果使用 URL 打开在线图像文件 , 需要符合 PIL 的文档要求 。
matplotlib.image.imread 的代码在这里:matplotlib/image.py at master · matplotlib/matplotlib · GitHub 。matplotlib 的原生 PNG 读取和写入,是用 C 实现的,代码在这里:matplotlib/_png.cpp at master · matplotlib/matplotlib · GitHub 。
matplotlib 是先用 pil 的 open 打开图像 , 如果格式是 png,就用原生方法打开 。相关代码如下:
handlers = {'png': _png.read_png, }
if format is None:
if cbook.is_string_like(fname):
parsed = urlparse(fname)
# If the string is a URL, assume png

推荐阅读