网站首页 > 文章中心 > 其它

python图形读取函数

作者:小编 更新时间:2023-10-05 07:56:24 浏览量:427人看过

Python的各种imread函数在实现方式和读取速度上有何区别

① PIL.Image.open

open() 函数打开图像,但并不读入,直到有操作发生.

具体的读取操作是在 ImageFile.py 写的.大体流程是先检测文件类型,整块地读入文件内容,然后调用解码器解码,做了很多优化,效率应该还是很高的.

imread 调用 scipy.misc.pilutil.imread.从名字就能看出来其实调用的还是 Pillow.

确实是调用 pil.image.open(),然后返回一个 fromimage().

调用的还是 pilutil 中的 imread

相关代码如下

try:

from .pilutil import *

from . import pilutil

__all__ += pilutil.__all__

del pilutil

except ImportError:

pass

也算是学了一招,从 pilutil 导入其所有函数添加到当前空间,然后又删除了 pilutil 消除影响.

代码今天这一节: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.

这里是调用的 CV::imread(),代码今天这一节:opencv/loadsave.cpp at master - opencv/opencv - GitHub.一般来说 C\C++ 的实现,应该比 python 速度快一点.

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

if len(parsed.scheme) 1:

ext = 'png'

else:

basename, ext = os.path.splitext(fname)

ext = ext.lower()[1:]

elif hasattr(fname, 'name'):

basename, ext = os.path.splitext(fname.name)

ext = format

if ext not in handlers:

im = pilread(fname)

if im is None:

raise ValueError('Only know how to handle extensions: %s; '

'with Pillow installed matplotlib can handle '

'more images' % list(six.iterkeys(handlers)))

return im

声明的处理器只有 png.如果是 png 文件,调用 _png.read_png.如果不是 png 直接使用 pilread(就是用 pil 的 Image.open 然后 pil_to_array).

matplotlib 的源码确实比较复杂,一大部分主体是用 C 写的,改动很激进,功能更新猛烈.

python plt.imshow 怎么用

用法以既步骤:

①.、给出一张图片.

opencv和python下,对图片的读取程序报错如何解决?

①.、需要用到其他模块的函数,如:

以下照片是关于Ipython的运行界面:

python处理图片数据?

生成一张纯色的图片

批量生成图片

上面生成了一张图片,那要生成十张图片呢,这种步骤一样,只是颜色改变的,利用循环就可以解决.首先创建一个颜色列表,把要生成的图片颜色放进去.接着循环获取不同的颜色,保存的时候利用字符串拼接的方法改变图片的名字.

本地生成的图片

封装成函数

前面的方法已经可以批量生成图片了,为了通用性强一点,我们可以封装成函数,把哪些可以改变的参数单独抽离出来.尺寸也同样,使用的时候,可以根据自己的需要定义颜色列表和尺寸.当然还有加一些提示用语和报错兼容性,这里就不讲了.

以上就是土嘎嘎小编为大家整理的python图形读取函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章