scipy.misc मॉड्यूल में कोई विशेषता नहीं है?


125

मैं डरपोक के साथ एक छवि को पढ़ने की कोशिश कर रहा हूं। हालांकि यह 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.__version__देता है 0.9.0मेरे लिए और मैं आपकी समस्या को पुन: पेश नहीं कर सकते हैं
हैनेस

क्या आपको वही त्रुटि मिलती है यदि आप करते हैं from scipy.misc import imread, और फिर imread('test.tif')?
कार्तिकार

@Kikikr हां, मुझे इसके लिए वही त्रुटि मिलती है।
ustroetz

4
मुझे लगता है कि यह फ़ंक्शन PIL ( pythonware.com/products/pil ) पर निर्भर है। क्या आपके पास पीआईएल है?
वाइल्डक

6
imreadSciPy 1.0.0 में पदावनत किया गया था, और 1.2.0 में हटा दिया गया है। imageio.imreadइसके बजाय उपयोग करें ।
मानस

जवाबों:


137

आपको पिलो (पूर्व में पीआईएल ) स्थापित करने की आवश्यकता है । से डॉक्स पर scipy.misc:

ध्यान दें कि तकिया SciPy की निर्भरता नहीं है, लेकिन नीचे दी गई सूची में दिखाए गए छवि हेरफेर फ़ंक्शन इसके बिना उपलब्ध नहीं हैं:

...

imread

...

पिलो को स्थापित करने के बाद, मैं imreadइस प्रकार पहुंच पा रहा था :

In [1]: import scipy.misc

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

ऑर्ज़, लेकिन अगर मैं पीआईएल स्थापित करता हूं, तो यह मुझे दे देगा<PngImagePlugin.PngImageFile...
एलन रुएन

21
इसे अब पीआईएल के बजाय पिलो होना चाहिए। संदर्भ: तकिए ।readthedocs.org
युकेन झोंग

आपने मेरा दिन बचा लिया है, लेकिन डराने वाले दस्तावेज इतने खराब क्यों हैं! मेरे कदमों को स्थापित किया गया है numpy + MKL> पिलो> स्काइप सभी को खिड़कियों के लिए इरविन के संकलित अजगर मॉड्यूल में कैलिफोर्निया विश्वविद्यालय से डाउनलोड किया गया है।
SIslam

4
अगले उत्तर (@ शादाब का जवाब) के रूप में अच्छी तरह से पढ़ें , और ध्यान दें कि यह सिर्फ है imageio, नहीं scipy.imageio
टेरी ब्राउन

4
ध्यान दें कि यह SciPy (1.3.0) के नवीनतम संस्करण के साथ काम नहीं करता है। शादाब का हल काम करता है।
निखिल गुप्ता

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 के इम्रेडर ने एक numpy.ndarray को वापस किया। imageio.imread रिटर्न imageio.core.util.Array। यदि आप एक numpy.ndarray चाहते / चाहते हैं और इसे कनवर्ट नहीं करना चाहते हैं, तो matplotlib.pyplot.imread का उपयोग करें, क्योंकि यह भी numpy.ndarray देता है।
स्टीफन

1
मुझे यहां भी ऐसी ही समस्या है, लेकिन सम्मान के साथ imresize। पहले, scipy.misc.imresizeकाम करता है। अब यह पदावनत हो गया है और मुझे इसके लिए विकल्प कहां मिलेगा?
साचंद

यह एक मजाक है @saichand
फ़िलिप करें

1
@filip, मैंने scipy.misc.imresize का उपयोग करने की कोशिश की। यह अब काम नहीं करता है, लेकिन मैंने कुछ समय पहले इसका इस्तेमाल किया था। काश, आपने मुझे सही कहा हो तो जो मैंने कहा, उस टिप्पणी में इसे मजाक के रूप में कहने के बजाय कोई गलती थी। मैं अपनी गलतियों से सीखने के लिए तैयार हूं। मेरी टिप्पणी में क्या गलत है? धन्यवाद।
सायचंद

वैसे मुझे इसे स्वीकार करना होगा मैं अपनी टिप्पणी से थोड़ा निराश था उस समय मैंने इसे लिखा था: पी। मेरा मतलब था कि यह एक मजाक है कि वे खिड़कियों पर स्काइप के लिए 1.0 से नीचे पहियों या स्थापना प्रदान नहीं करते हैं। यदि आप अभी भी इसका उपयोग करना चाह रहे हैं, तो बस scipy == 1.2.0 का उपयोग करें क्योंकि यह अभी भी वहां उपलब्ध है (बस deprecc के रूप में चिह्नित है, अभी भी काम करता है!) @Saichand
filip

48

1.2.0 संस्करण के बाद इम्रेड का मूल्यह्रास किया गया है! इसलिए इस मुद्दे को हल करने के लिए मुझे संस्करण 1.1.0 स्थापित करना पड़ा।

pip install scipy==1.1.0

3
देखिए @ शादाब का जवाब, imageioअभी इसमें है।
टेरी ब्राउन

31

अजगर 3 के लिए, यह उपयोग करने के लिए सबसे अच्छा है imreadमें matplotlib.pyplot:

from matplotlib.pyplot import imread

17

यदि किसी को भी इस मुद्दे का सामना करना पड़ रहा है, तो कृपया scipy की स्थापना रद्द करें और scipy == 1.1.0 स्थापित करें

$ pip uninstall scipy

$ pip install scipy==1.1.0

9

आपको पायथन इमेजिंग लाइब्रेरी (PIL) की आवश्यकता है लेकिन अफसोस! लगता है कि पीआईएल परियोजना को छोड़ दिया गया है। विशेष रूप से, इसे पाइथन 3 में पोर्ट नहीं किया गया है। इसलिए यदि आप पाइथन 3 में पीआईएल की कार्यक्षमता चाहते हैं, तो आप पिलो का उपयोग अच्छी तरह से करेंगे , जो कि पीआईएल का अर्ध-आधिकारिक कांटा है और सक्रिय रूप से विकसित होता प्रतीत होता है। वास्तव में, यदि आपको एक आधुनिक पीआईएल कार्यान्वयन की आवश्यकता है, तो मैं तकिया की सिफारिश करूंगा। यह उतना ही सरल है pip install pillow। चूंकि यह पीआईएल के समान नाम स्थान का उपयोग करता है इसलिए यह अनिवार्य रूप से एक ड्रॉप-इन प्रतिस्थापन है।

यह "अर्ध-आधिकारिक" कैसे कांटा है? आप पूछ सकते हैं। बारे में तकिया किए गए दस्तावेज़ों की पृष्ठ इस कहते हैं:

अंतिम पीआईएल जारी होने के बाद से अधिक समय बीतने के साथ, एक नई पीआईएल रिलीज की संभावना कम हो जाती है। हालाँकि, हम अभी तक एक आधिकारिक "पीआईएल मर चुका है" घोषणा सुन रहे हैं। इसलिए यदि आप अभी भी पीआईएल का समर्थन करना चाहते हैं, तो कृपया पहले यहां मुद्दों की रिपोर्ट करें, फिर यहां संबंधित पिलो टिकट खोलें।

कृपया पहले टिकट के लिए एक लिंक प्रदान करें ताकि हम इस समस्या को ट्रैक कर सकें।

हालाँकि, आधिकारिक पीआईएल साइट पर सबसे हालिया जनहित याचिका 15 नवंबर, 2009 को दिनांकित है। मुझे लगता है कि हम सुरक्षित रूप से तकलीफ़ को पीआईएल के उत्तराधिकारी के रूप में घोषित कर सकते हैं (इस लेखन के बाद) लगभग आठ साल तक कोई नई रिलीज़ नहीं हुई। यहां तक ​​कि अगर आपको पायथन 3 समर्थन की आवश्यकता नहीं है, तो मेरा सुझाव है कि आप प्राचीन पीआईएल 1.1.6 वितरण को PyPI में उपलब्ध कराएं और बस ताजा, अप-टू-डेट, संगत तकिया स्थापित करें।


7

निम्नलिखित आदेशों द्वारा पिलो लाइब्रेरी स्थापित करें:

pip install pillow

ध्यान दें, चयनित उत्तर पुराना हो चुका है। SciPy के डॉक्स देखें

ध्यान दें कि तकिया ( https://python-pillow.org/ ) SciPy की निर्भरता नहीं है, लेकिन नीचे दी गई सूची में दर्शाए गए छवि हेरफेर फ़ंक्शन इसके बिना उपलब्ध नहीं हैं।


6

जैसा कि उत्तर दिया गया misc.imread SciPy 1.0.0 में पदावनत है, और इसे 1.2.0 में हटा दिया जाएगा। इमेजियो एक विकल्प है, यह प्रकार की वस्तु लौटाएगा:

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

लेकिन इमेजियो के बजाय, cv2 का उपयोग करें

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

im प्रकार का होगा: <class 'numpy.ndarray'>

जैसा कि सुन्न सरणियों की गणना तेजी से होती है।


imageio काम करता है, लेकिन cv2 त्रुटि का कारण बनता है: libpng चेतावनी: IHDR में अमान्य छवि ऊंचाई
sailfish009

4

PIL लाइब्रेरी का उपयोग करता है, अगर लाइब्रेरी स्थापित है, तो इसका उपयोग करता है: "scipy.ndimage import imread से"

स्रोत: http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.ndimage.imread.html


यह मेरे लिए काम करता है! हालांकि मुझे समझ नहीं आया कि मेरे प्रोफेसर ने "scipy.misc import imread से" का उपयोग क्यों किया और यह मेरे लैपटॉप पर काम नहीं करता है
ElleryL


1

आपको एक अजगर छवि पुस्तकालय ( PIL ) की आवश्यकता है, लेकिन अब PIL केवल पर्याप्त नहीं है, आप बेहतर तरीके से तकिया स्थापित करेंगे । यह अच्छा काम करता है।


2
पहले से बताए गए स्वीकार किए गए उत्तर पर एक टिप्पणी pillowहै जिसका उपयोग इसके बजाय किया जाना चाहिए PIL। मुझे नहीं लगता कि इसे एक उत्तर के रूप में जोड़ना एक बुरा विचार है, लेकिन यदि आप समझाते हैं तो यह कहीं अधिक उपयोगी होगा। धन्यवाद।
lrnzcig

1

जुपिटर नोटबुक में निम्नलिखित को चलाना, मेरे पास एक समान त्रुटि संदेश था:

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-package \ 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)

यह सवाल से संबंधित नहीं है। यह एक अलग समस्या और जवाब है।
हालिस येल्बोआसा

1

मेरे पास ज्यूपिटर नोटबुक पर छवि निष्कर्षण के लिए आवश्यक सभी पैकेज हैं, लेकिन फिर भी यह मुझे वही त्रुटि दिखाता है।

Jupyter नोटबुक पर त्रुटि

उपरोक्त टिप्पणियों को पढ़ना, मैंने आवश्यक पैकेज स्थापित किए हैं। कृपया बताएं कि क्या मैंने कुछ पैकेज मिस किए हैं।

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

scipy==1.2.1

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.