Misc 模块没有读取属性?

我正试着用感应读取图像。但是它不接受 scipy.misc.imread部分。这是什么原因造成的?

>>> import scipy
>>> scipy.misc
<module 'scipy.misc' from 'C:\Python27\lib\site-packages\scipy\misc\__init__.pyc'>
>>> scipy.misc.imread('test.tif')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
scipy.misc.imread('test.tif')
AttributeError: 'module' object has no attribute 'imread'
293512 次浏览

你需要安装 枕头(以前是 PIL)。从 那些文件scipy.misc:

请注意,枕头不依赖于 SciPy,但如果没有它,下面列出的图像处理功能就无法使用:

...

imread

...

在安装枕头之后,我能够访问 imread如下:

In [1]: import scipy.misc


In [2]: scipy.misc.imread
Out[2]: <function scipy.misc.pilutil.imread>

Imread 使用 PIL 库,如果安装了该库,则使用:

from scipy.ndimage import imread

资料来源: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html

您需要一个 python 映像库() ,但是现在只有 PIL 是不够的,您最好安装 枕头。效果不错。

您需要 Python 成像库(PIL) ,但是唉!PIL 项目似乎已经被放弃了。特别是,它还没有被移植到 Python3。因此,如果您希望在 Python 3中使用 PIL 功能,那么最好使用 枕头,它是 PIL 的半官方分支,似乎正在积极开发中。事实上,如果你需要一个现代的 PIL 实现,我会推荐枕头。就像 pip install pillow一样简单。因为它使用与 PIL 相同的名称空间,所以它本质上是一个插件替换。

这把叉子有多“半官方”? 你可能会问。《枕头》杂志的 关于页面上写道:

随着上一次 PIL 发布以来的更长时间的过去, 然而,我们仍未听到一个官方的「 因此,如果你仍然支持公益诉讼,请 先在这里报告问题,然后在这里打开相应的枕头票。

请提供一个链接到第一票,以便我们可以跟踪问题(s) 逆流而上。

然而,正式公营公司网站上最新的 PIL 发布日期是2009年11月15日。我认为我们可以放心地宣布枕头公司的继承人后,近八年没有新的版本(本文写作)。因此,即使您不需要 Python3支持,我建议您避免使用 PyPI 中提供的古老的 PIL1.1.6发行版,只安装新的、最新的、兼容的 Pillow。

python -m pip install pillow

这招对我很管用。

通过以下命令安装枕头库:

pip install pillow

注意,选择的答案已经过时 SciPy

请注意,Pillow (https://python-pillow.org/)不是 SciPy 的依赖项,但是如果没有它,下面列表中所示的图像处理功能就不可用。

在 SciPy 1.0.0中不推荐使用 imread,并将在1.2.0中删除它。 使用 imageio.imread代替。

import imageio
im = imageio.imread('astronaut.png')
im.shape  # im is a numpy array
(512, 512, 3)
imageio.imwrite('imageio:astronaut-gray.jpg', im[:, :, 0])

对于 Python 3,最好在 matplotlib.pyplot中使用 imread:

from matplotlib.pyplot import imread

正如所回答的那样,misc.imread 在 SciPy 1.0.0中不推荐,并将在1.2.0中删除。 Imageio 是一个选项,它将返回类型为:

<class 'imageio.core.util.Image'>

但是不要使用 image,而是使用 cv2

import cv2
im = cv2.imread('astronaut.png')

即时通讯将属于以下类型: <class 'numpy.ndarray'>

因为数字数组计算起来更快。

在木星笔记本上运行下面的代码,我得到了一个类似的错误消息:

from skimage import data
photo_data = misc.imread('C:/Users/ers.jpg')
type(photo_data)

‘ error’msg:

程序文件(x86) Studio Shared Anaconda3 _ 64 lib site-package ipykernel _ launcher. py: 3: 反对警告: imread已被弃用 SciPy1.0.0,并将在1.2.0中删除。使用 imageio.imread 这是独立于 ipykernel 包的,所以我们可以避免 进口,直到

通过以下方法,我解决了这个问题:

import matplotlib.pyplot
photo_data = matplotlib.pyplot.imread('C:/Users/ers.jpg')
type(photo_data)

我有木星笔记本上的图像提取所需的所有软件包,但即使那样,它显示我相同的错误。

木星笔记本错误

阅读上面的评论,我已经安装了所需的软件包。请告诉我是否错过了一些软件包。

pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2


scipy==1.2.1

我在 python 3.6中使用的解决方案如下

安装枕头

Imread 在版本1.2.0之后被折旧! 所以为了解决这个问题,我必须安装1.1.0版本。

pip install scipy==1.1.0

如果有人遇到同样的问题,请卸载 scypy 并安装 scypy = = 1.1.0

$ pip uninstall scipy


$ pip install scipy==1.1.0

唯一的方法,我可以得到的 .png文件,我正在工作,因为 uint8是与 OpenCv。

cv2.imread(file)实际上返回 numpy.ndarraydtype=uint8

必须首先安装与 scypy 兼容的 Python 版本(< 3.7)。 我不能使用 pip 来安装 scipy 版本1.0[我认为 pip 不再支持这个版本] ,而是使用 conda:

conda install -c anaconda scipy==1.0

然后使用“ imread”你需要安装枕头。

pip install pillow

Imread 在 scypy.misc 中不建议使用; 改为使用 imageio.imread。

Imageio 提供了与 Scipy 相同的功能。但是请记住,一些参数需要改变(详细信息请查看 给你) :

  1. 使用 pilmode关键字参数而不是 mode
  2. 使用 as_gray关键字参数而不是 flatten

一种方法是这样使用 PIL:

    from PIL import Image
input_image = Image.open(filename)