scipy.misc 모듈에 imread 속성이 없습니까?


125

scipy로 이미지를 읽으려고합니다. 그러나 그것은 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'

어떤 버전의 scipy를 사용하고 있습니까? scipy.__version__주는 0.9.0나를 위해 그리고 난 당신의 문제를 재현 할 수 없습니다
한스

당신이 경우에 동일한 에러가 발생합니까 from scipy.misc import imread다음과 imread('test.tif')?
karthikr

@karthikr 예, 동일한 오류가 발생합니다.
ustroetz 2013 년

4
이 기능은 PIL ( pythonware.com/products/pil )이 설치되는 것에 달려 있다고 생각합니다 . PIL이 있습니까?
Wilduck 2013 년

6
imreadSciPy 1.0.0에서 더 이상 사용되지 않으며 1.2.0에서 제거되었습니다. imageio.imread대신 사용하십시오 .
Manas

답변:


137

Pillow (이전 PIL ) 를 설치해야합니다 . 에서 워드 프로세서scipy.misc:

Pillow는 SciPy의 종속성이 아니지만 아래 목록에 표시된 이미지 조작 기능은 SciPy 없이는 사용할 수 없습니다.

...

imread

...

Pillow를 설치 한 후 imread다음과 같이 액세스 할 수있었습니다 .

In [1]: import scipy.misc

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

Orz,하지만 PIL을 설치하면 나에게 제공됩니다<PngImagePlugin.PngImageFile...
Allan Ruin 2014

21
이제 PIL 대신 Pillow가되어야합니다. 참조 : pillow.readthedocs.org
Yuchen Zhong

당신은 내 하루를 구했지만 왜 scipy 문서가 그렇게 가난한 지! 내 단계는 numpy + MKL> Pillow> Scipy를 설치하는 것입니다. 모든 것은 캘리포니아 대학교 Irvine에서 Windows 용으로 컴파일 된 파이썬 모듈에서 다운로드됩니다.
SIslam

4
READ 다음의 답변 (Shadab의 대답 @)뿐만 아니라, 그것은 단지 있습니다 imageio, 없습니다 scipy.imageio.
Terry Brown

4
이것은 최신 버전의 SciPy (1.3.0)에서는 작동하지 않습니다. Shadab의 솔루션이 작동합니다.
Nikhil Gupta

106

imreadSciPy 1.0.0에서 더 이상 사용되지 않으며 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])

12
SciPy의 imread는 numpy.ndarray를 반환하는 데 사용되었습니다. imageio.imread는 imageio.core.util.Array를 반환합니다. numpy.ndarray를 원하거나 필요로하고 변환하지 않으려면 numpy.ndarray도 반환하므로 matplotlib.pyplot.imread를 사용하십시오.
Stefan

1
여기에도 비슷한 문제가 있지만 imresize. 이전에는 scipy.misc.imresize작동합니다. 이제 더 이상 사용되지 않으며 이에 대한 대안을 어디에서 얻을 수 있습니까?
saichand

농담 @saichand
filip

1
@filip, scipy.misc.imresize를 사용해 보았습니다. 지금은 작동하지 않지만 언젠가는 사용했습니다. 내가 말한 내용에 농담으로 말하는 것이 아니라 그 댓글에 실수가 있으면 나를 고쳐 주셨으면합니다. 나는 내 실수로부터 배울 수 있습니다. 내 댓글에 무엇이 잘못 되었나요? 감사합니다.
saichand

글쎄요, 제가 글을 썼을 때 제 의견에 약간 실망했음을 인정해야합니다. 나는 그들이 창문에서 scipy를 위해 1.0 이하의 바퀴 또는 설치를 제공하지 않은 농담이라는 것을 의미했습니다. (!되지 않는 것으로 만 표시 여전히 작동)이 형식을 사용 찾고 있다면 그냥 여전히 사용할 수 있기 때문에 scipy == 1.2.0을 사용 @saichand
필립

48

imread는 버전 1.2.0 이후에 감가 상각되었습니다! 따라서이 문제를 해결하려면 버전 1.1.0을 설치해야했습니다.

pip install scipy==1.1.0

3
@Shadab의 답변을 참조하십시오 imageio.
Terry Brown

31

파이썬 3의 경우, 사용하는 것이 가장 좋습니다 imreadmatplotlib.pyplot:

from matplotlib.pyplot import imread

17

동일한 문제가 발생하는 경우 scipy를 제거하고 scipy == 1.1.0을 설치하십시오.

$ pip uninstall scipy

$ pip install scipy==1.1.0

9

Python Imaging Library (PIL)가 필요하지만 아쉽습니다! PIL 프로젝트는 포기 된 것 같습니다. 특히 Python 3으로 포팅되지 않았습니다. 따라서 Python 3에서 PIL 기능을 원한다면 PIL 의 반 공식 포크 인 Pillow를 사용 하는 것이 좋으며 활발하게 개발되고있는 것으로 보입니다. 실제로 최신 PIL 구현이 필요하다면 Pillow를 추천합니다. 간단합니다 pip install pillow. PIL과 동일한 네임 스페이스를 사용하므로 본질적으로 드롭 인 교체입니다.

이 포크는 얼마나 "반 공식"입니까? 당신은 물어볼 수 있습니다. Pillow 문서 의 정보 페이지는 다음과 같이 말합니다.

마지막 PIL 릴리스 이후 더 많은 시간이 지남에 따라 새 PIL 릴리스 가능성이 감소합니다. 그러나 아직 공식 "PIL이 죽었다"는 발표를 듣지 못했습니다. 그래도 PIL을 지원하려면 먼저 여기에서 문제를보고 한 다음 여기에서 해당 Pillow 티켓을여십시오.

업스트림 문제를 추적 할 수 있도록 첫 번째 티켓에 대한 링크를 제공하세요.

그러나 공식 PIL 사이트 의 가장 최근 PIL 릴리스 날짜는 2009 년 11 월 15 일입니다. 필자는 필로우가 (이 글을 쓰는 시점에서) 거의 8 년 동안 새로운 릴리스가없는 후 PIL의 후계자로 필로우를 안전하게 선포 할 수 있다고 생각합니다. 따라서 Python 3 지원이 필요하지 않더라도 PyPI에서 사용 가능한 고대 PIL 1.1.6 배포를 피하고 새롭고 호환 가능한 최신 Pillow를 설치하는 것이 좋습니다.


7

다음 명령으로 Pillow 라이브러리를 설치하십시오.

pip install pillow

선택한 답변이 오래되었습니다. SciPy 문서보기

Pillow ( https://python-pillow.org/ )는 SciPy의 종속성이 아니지만 아래 목록에 표시된 이미지 조작 기능은 SciPy 없이는 사용할 수 없습니다.


6

대답했듯이 misc.imread는 SciPy 1.0.0에서 더 이상 사용되지 않으며 1.2.0에서 제거됩니다. imageio는 하나의 옵션이며 다음 유형의 객체를 반환합니다.

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

그러나 imageio 대신 cv2를 사용하십시오.

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

im 유형은 다음과 같습니다. <class 'numpy.ndarray'>

numpy 배열은 계산 속도가 빠릅니다.


imageio는 작동하지만 cv2로 인해 오류가 발생합니다. libpng 경고 : IHDR의 잘못된 이미지 높이
sailfish009



1

파이썬 이미지 라이브러리 ( PIL ) 가 필요 하지만 이제 PIL만으로는 충분하지 않습니다 . Pillow를 설치하는 것이 좋습니다 . 이것은 잘 작동합니다.


2
pillow대신에 사용해야 한다는 이미 수락 된 답변에 대한 의견 이 있습니다 PIL. 대답으로 추가하는 것이 나쁜 생각은 아니지만 이유를 설명해 주시면 훨씬 더 유용 할 것입니다. 감사.
lrnzcig

1

Jupyter 노트북에서 다음을 실행하면 비슷한 오류 메시지가 나타납니다.

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

'오류'메시지 :

D : \ Program Files (x86) \ Microsoft Visual Studio \ Shared \ Anaconda3_64 \ lib \ site-packages \ ipykernel_launcher.py : 3 : DeprecationWarning : imread더 이상 사용되지 않습니다! imreadSciPy 1.0.0에서 더 이상 사용되지 않으며 1.2.0에서 제거됩니다. imageio.imread 대신 사용하십시오 . 이것은 ipykernel 패키지와는 별개이므로

그리고 다음을 사용하여 해결했습니다.

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

질문과 관련이 없습니다. 그것은 다른 문제와 대답입니다.
Halis Yılboğa

1

jupyter 노트북에서 이미지 추출에 필요한 모든 패키지가 있지만 그래도 동일한 오류가 표시됩니다.

Jupyter 노트북 오류

위의 설명을 읽고 필요한 패키지를 설치했습니다. 내가 일부 패키지를 놓친 경우 알려주십시오.

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

scipy==1.2.1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.