scipy.misc modülünün imread niteliği yok mu?


125

Scipy ile bir görüntü okumaya çalışıyorum. Ancak scipy.misc.imreadkısmı kabul etmiyor . Bunun nedeni ne olabilir?

>>> 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'nin hangi sürümünü kullanıyorsunuz? benim için scipy.__version__veriyor 0.9.0ve sorununuzu yeniden oluşturamıyorum
hannes

aynı hatayı alıyor musunuz from scipy.misc import imreadve sonra imread('test.tif')?
karthikr

@karthikr evet, bunun için aynı hatayı alıyorum.
ustroetz

4
Bu işlevin kurulmakta olan PIL'e ( pythonware.com/products/pil ) bağlı olduğunu düşünüyorum . PIL'iniz var mı?
Wilduck

6
imreadSciPy 1.0.0'da kullanımdan kaldırıldı ve 1.2.0'da kaldırıldı. imageio.imreadBunun yerine kullanın .
Manas

Yanıtlar:


137

Pillow'u (eski adıyla PIL ) yüklemeniz gerekiyor . Gönderen docs üzerinde scipy.misc:

Pillow'un SciPy'nin bir bağımlılığı olmadığını, ancak aşağıdaki listede belirtilen görüntü işleme işlevlerinin onsuz kullanılamayacağını unutmayın:

...

imread

...

Pillow'u kurduktan sonra imreadşu şekilde erişebildim :

In [1]: import scipy.misc

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

Orz, ancak PIL'i yüklersem, o zaman bana verecek<PngImagePlugin.PngImageFile...
Allan Ruin

21
Artık PIL yerine Yastık olmalıdır. Referans: pillow.readthedocs.org
Yuchen Zhong

Günümü kurtardın, ama neden scipy belgeleri bu kadar zayıf! Adımlarım, numpy + MKL> Pillow> Scipy'yi yükleyin, hepsi California üniversitesinden Irvine'de Windows için derlenmiş python modüllerinden indirilir.
SIslam

4
SONRAKİ CEVABI (@ Shadab'ın cevabı) da OKUYUN ve bunun adil imageioolmadığını unutmayın scipy.imageio.
Terry Brown

4
Bunun SciPy'nin (1.3.0) son sürümüyle çalışmadığını unutmayın. Shadab'ın çözümü işe yarıyor.
Nikhil Gupta

106

imreadSciPy 1.0.0'da kullanımdan kaldırılmıştır ve 1.2.0'da kaldırılacaktır. imageio.imreadBunun yerine kullanın .

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'nin imread'i bir numpy.ndarray döndürürdü. imageio.imread, imageio.core.util.Array döndürür. Bir numpy.ndarray istiyorsanız / buna ihtiyacınız varsa ve onu dönüştürmek istemiyorsanız, matplotlib.pyplot.imread'i kullanın, çünkü aynı zamanda bir numpy.ndarray döndürür.
Stefan

1
Burada da benzer bir problemim var, ama açısından imresize. Daha önce scipy.misc.imresizeçalışıyor. Şimdi kullanımdan kaldırıldı ve bunun için bir alternatifi nereden bulacağım?
saichand

Bu bir şaka @saichand
filip

1
@filip, scipy.misc.imresize kullanmayı denedim. Şimdi çalışmıyor, ama bir ara kullanmıştım. Keşke o yorumda bir şaka olarak söylemek yerine, bu yorumda herhangi bir yanlışlık varsa beni düzeltebilseydin. Hatalarımdan ders almaya açığım. Yorumumda yanlış olan ne? Teşekkür ederim.
saichand

Evet, itiraf etmeliyim ki, yazdığım sırada yorumumdan biraz hayal kırıklığına uğradım: P. Pencerelerde scipy için 1.0'ın altında tekerlekler veya kurulumlar sağlamadıkları bir şaka olduğunu söyledim. Hala kullanmak istiyorsanız scipy == 1.2.0 kullanın, çünkü orada hala mevcut (sadece kullanımdan kaldırıldı olarak işaretlendi, hala çalışıyor!) @Saichand
filip

48

imread 1.2.0 sürümünden sonra amortismana tabi tutuldu! Bu sorunu çözmek için 1.1.0 sürümünü yüklemem gerekiyordu.

pip install scipy==1.1.0

3
@ Shadab'ın cevabına bakın, imageioşimdi geldi.
Terry Brown

31

Python 3 için, kullanımda en iyisidir imreadiçinde matplotlib.pyplot:

from matplotlib.pyplot import imread

18

Herhangi birinin aynı sorunla karşılaşması durumunda, lütfen scipy'yi kaldırın ve scipy == 1.1.0'ı yükleyin.

$ pip uninstall scipy

$ pip install scipy==1.1.0

9

Python Görüntüleme Kitaplığına (PIL) ihtiyacınız var ama ne yazık ki! PIL projesi terk edilmiş görünüyor. Eğer Python 3 PIL fonksiyonelliği istiyorsanız Özellikle, Python 3. So taşıdık edilmedi, sen de kullanım yaparsınız edeceğiz Yastık PIL yarı-resmi çatal ve aktif olarak geliştirilecek görünüyor. Aslında, modern bir PIL uygulamasına ihtiyacınız varsa, Pillow'u tavsiye ederim. Bu kadar basit pip install pillow. PIL ile aynı ad alanını kullandığından, esasen bir drop-in ikamesidir.

Bu çatal ne kadar "yarı resmi"? sorabilirsin. Hakkında Yastık dokümanlar sayfa söylüyorum:

Son PIL sürümünden bu yana daha fazla zaman geçtikçe, yeni bir PIL sürümünün olma olasılığı azalır. Ancak, henüz resmi bir "PIL öldü" duyurusunu duymadık. Öyleyse, yine de PIL'i desteklemek istiyorsanız, lütfen sorunları önce buraya bildirin, ardından ilgili Yastık biletlerini burada açın.

Yukarı akıştaki sorunları izleyebilmemiz için lütfen ilk bilete bir bağlantı sağlayın.

Bununla birlikte, resmi PIL sitesindeki en son PIL sürümü 15 Kasım 2009 tarihlidir. Sanırım, yaklaşık sekiz yıl boyunca yeni bir yayın yapılmadıktan sonra (bu yazı itibariyle) Pillow'u PIL'in halefi olarak güvenle ilan edebiliriz. Dolayısıyla, Python 3 desteğine ihtiyacınız olmasa bile, PyPI'de bulunan eski PIL 1.1.6 dağıtımından kaçınmanızı ve sadece yeni, güncel, uyumlu Pillow'u yüklemenizi öneririm.


7

Yastık kitaplığını aşağıdaki komutlarla kurun:

pip install pillow

Unutmayın, seçilen cevap güncelliğini yitirmiştir. SciPy belgelerine bakın

Pillow'un ( https://python-pillow.org/ ) SciPy'ye bağımlı olmadığını, ancak aşağıdaki listede belirtilen görüntü işleme işlevlerinin onsuz kullanılamayacağını unutmayın.


6

Cevaplandığı gibi misc.imread, SciPy 1.0.0'da kullanımdan kaldırılmıştır ve 1.2.0'da kaldırılacaktır. imageio bir seçenektir, şu türdeki nesneyi döndürür:

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

ancak imageio yerine cv2 kullanın

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

im tipinde olacak: <class 'numpy.ndarray'>

Numpy dizilerinin hesaplanması daha hızlı olduğundan.


imageio çalışıyor, ancak cv2 hataya neden oluyor: libpng uyarısı: IHDR'de geçersiz resim yüksekliği
sailfish009



1

Bir piton görüntü kitaplığı (ihtiyaç PIL ), ama şimdi PIL sadece daha iyi yüklemek istiyorum, yeterli değildir Yastık . Bu iyi çalışıyor.


2
Kabul edilen cevapta pillowbunun yerine kullanılması gerektiğini belirten bir yorum var PIL. Bunu bir cevap olarak eklemenin kötü bir fikir olduğunu sanmıyorum, ancak nedenini açıklarsanız çok daha faydalı olur. Teşekkürler.
lrnzcig

1

Aşağıdakileri bir Jupyter Not Defterinde çalıştırırken benzer bir hata mesajı aldım:

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

'hata' msg:

D: \ Program Files (x86) \ Microsoft Visual Studio \ Shared \ Anaconda3_64 \ lib \ site-packages \ ipykernel_launcher.py: 3: Kullanımdan Kaldırılma Uyarısı: imreadkullanımdan kaldırıldı! imreadSciPy 1.0.0'da kullanımdan kaldırılmıştır ve 1.2.0'da kaldırılacaktır. imageio.imread Bunun yerine kullanın . Bu, ipykernel paketinden ayrıdır, bu nedenle,

Ve aşağıdakileri kullanarak çözdüm:

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

Soruyla ilgili değil. Bu farklı bir problem ve cevaptır.
Halis Yılboğa

1

Jupyter not defterinde görüntü çıkarma için gerekli tüm paketlere sahibim, ancak o zaman bile bana aynı hatayı gösteriyor.

Jupyter Not Defterinde Hata

Yukarıdaki yorumları okuyarak, gerekli paketleri kurdum. Lütfen bazı paketleri kaçırıp kaçırmadığımı söyleyin.

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

scipy==1.2.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.