scipy.misc module has no attribute imread?

PythonInstallationScipyDependenciesPython Imaging-Library

Python Problem Overview


I am trying to read an image with scipy. However it does not accept the scipy.misc.imread part. What could be the cause of this?

>>> 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'

Python Solutions


Solution 1 - Python

imread is deprecated in SciPy 1.0.0, and will be removed in 1.2.0. Use imageio.imread instead.

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])

Solution 2 - Python

You need to install Pillow (formerly PIL). From the docs on scipy.misc:

> Note that Pillow is not a dependency of SciPy but the image manipulation functions indicated in the list below are not available without it: > > ... > > imread > >...

After installing Pillow, I was able to access imread as follows:

In [1]: import scipy.misc

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

Solution 3 - Python

imread is depreciated after version 1.2.0! So to solve this issue I had to install version 1.1.0.

pip install scipy==1.1.0

Solution 4 - Python

For Python 3, it is best to use imread in matplotlib.pyplot:

from matplotlib.pyplot import imread

Solution 5 - Python

In case anyone encountering the same issue, please uninstall scipy and install scipy==1.1.0

$ pip uninstall scipy

$ pip install scipy==1.1.0

Solution 6 - Python

You need the Python Imaging Library (PIL) but alas! the PIL project seems to have been abandoned. In particular, it hasn't been ported to Python 3. So if you want PIL functionality in Python 3, you'll do well do use Pillow, which is the semi-official fork of PIL and appears to be actively developed. Actually, if you need a modern PIL implementation at all I'd recommend Pillow. It's as simple as pip install pillow. As it uses the same namespace as PIL it's essentially a drop-in replacement.

How "semi-official" is this fork? you may ask. The About page of the Pillow docs say this:

> As more time passes since the last PIL release, the likelihood of a > new PIL release decreases. However, we’ve yet to hear an official “PIL > is dead” announcement. So if you still want to support PIL, please > report issues here first, then open corresponding Pillow tickets here. > > Please provide a link to the first ticket so we can track the issue(s) > upstream.

However, the most recent PIL release on the official PIL site is dated November 15, 2009. I think we can safely proclaim Pillow as the successor of PIL after (as of this writing) nearly eight years of no new releases. So even if you don't need Python 3 support, I suggest you eschew the ancient PIL 1.1.6 distribution available in PyPI and just install fresh, up-to-date, compatible Pillow.

Solution 7 - Python

As answered misc.imread is deprecated in SciPy 1.0.0, and will be removed in 1.2.0. imageio is one option,it will return object of type :

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

but instead of imageio, use cv2

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

im will be of type : <class 'numpy.ndarray'>

As numpy arrays are faster to compute.

Solution 8 - Python

Install the Pillow library by following commands:

pip install pillow

Note, the selected answer has been outdated. See the docs of SciPy

> Note that Pillow (https://python-pillow.org/) is not a dependency of SciPy, but the image manipulation functions indicated in the list below are not available without it.

Solution 9 - Python

Imread uses PIL library, if the library is installed use :

from scipy.ndimage import imread

Source: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html

Solution 10 - Python

python -m pip install pillow

This worked for me.

Solution 11 - Python

You need a python image library (PIL), but now PIL only is not enough, you'd better install Pillow. This works well.

Solution 12 - Python

Running the following in a Jupyter Notebook, I had a similar error message:

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

'error' msg:

> D:\Program Files (x86)\Microsoft Visual > Studio\Shared\Anaconda3_64\lib\site-packages\ipykernel_launcher.py:3: > DeprecationWarning: imread is deprecated! imread is deprecated in > SciPy 1.0.0, and will be removed in 1.2.0. Use imageio.imread > instead. This is separate from the ipykernel package so we can avoid > doing imports until

And using the following I got it solved:

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

Solution 13 - Python

I have all the packages required for the image extraction on jupyter notebook, but even then it shows me the same error.

Error on Jupyter Notebook

Reading the above comments, I have installed the required packages. Please do tell if I have missed some packages.

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

scipy==1.2.1

Solution 14 - Python

The solution that work for me in python 3.6 is the following

> py -m pip install Pillow

Solution 15 - Python

The only way I could get the .png file I'm working with in as uint8 was with OpenCv.

cv2.imread(file) actually returned numpy.ndarray with dtype=uint8

Solution 16 - Python

You must first install the Python version compatible with scipy (<3.7). I could not use pip to install scipy version 1.0 [ I think this version is no longer supported on pip] and used conda instead:

conda install -c anaconda scipy==1.0

Then to use "imread" you need to install Pillow.

pip install pillow

Solution 17 - Python

imread is deprecated in scipy.misc; use imageio.imread instead.

imageio provides the same functionality as Scipy. But keep in mind that some arguments need to be changed (for detailed information please check here):

  1. Instead of mode, use the pilmode keyword argument.
  2. Instead of flatten, use the as_gray keyword argument.

Solution 18 - Python

One way is to use PIL like this:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionustroetzView Question on Stackoverflow
Solution 1 - PythonShadabView Answer on Stackoverflow
Solution 2 - PythonWilduckView Answer on Stackoverflow
Solution 3 - PythonmahbubcsejuView Answer on Stackoverflow
Solution 4 - PythonMasterJediView Answer on Stackoverflow
Solution 5 - PythonSuperNovaView Answer on Stackoverflow
Solution 6 - PythonJosh HansenView Answer on Stackoverflow
Solution 7 - Pythonkshitij_pView Answer on Stackoverflow
Solution 8 - PythonSteveView Answer on Stackoverflow
Solution 9 - PythonDhananjay MehtaView Answer on Stackoverflow
Solution 10 - PythonJosé Carlos AquinoView Answer on Stackoverflow
Solution 11 - PythonK.A.PendragonView Answer on Stackoverflow
Solution 12 - PythonMikeView Answer on Stackoverflow
Solution 13 - PythonRajView Answer on Stackoverflow
Solution 14 - PythonJorge Santos NeillView Answer on Stackoverflow
Solution 15 - PythonLucasView Answer on Stackoverflow
Solution 16 - PythonMohsen NavazaniView Answer on Stackoverflow
Solution 17 - Pythonziyi liuView Answer on Stackoverflow
Solution 18 - PythonArashView Answer on Stackoverflow