2014-12-14 2 views
5

से मेरे रास्पबेरी पीआई पर चलाया जाता है, मुझे पीआईकेमेरा मॉड्यूल के उपयोग के बारे में एक अजीब व्यवहार का सामना करना पड़ता है।पिकैमेरा को कक्षा के सदस्य के रूप में प्रारंभ नहीं किया जा सकता है जब स्क्रिप्ट कमांड प्रॉम्प्ट

निम्नलिखित कोड को सुचारू रूप से चलता है जब या तो कमांड प्रॉम्प्ट से ($ अजगर test.py) निष्क्रिय (F5) से शुरू या

import picamera 

if __name__ == "__main__": 
    camera=picamera.PiCamera() 
    camera.close() 

लेकिन जब मैं एक वर्ग में कैमरा वस्तु डाल कोड चलेंगे केवल जब निष्क्रिय (F5) से शुरू:

import picamera 

class VF: 
    def __init__(self): 
     self.camera = picamera.PiCamera() 

    def __del__(self): 
     self.camera.close() 


if __name__ == "__main__": 
    myvf = VF() 

जब मैं कमांड प्रॉम्प्ट से ऊपर कोड शुरू, मैं निम्न त्रुटि संदेश मिलता है:

mmal: mmal_vc_component_enable: failed to enable component: ENOSPC

Traceback (most recent call last): File "test.py", line 14, in myvf = VF()

File "test.py", line 6, in init self.camera = picamera.PiCamera()

File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 379, in init camera_num, self.STEREO_MODES[stereo_mode], stereo_decimate)

File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 505, in _init_camera prefix="Camera component couldn't be enabled")

File "/usr/lib/python2.7/dist-packages/picamera/exc.py", line 133, in mmal_check raise PiCameraMMALError(status, prefix)

picamera.exc.PiCameraMMALError: Camera component couldn't be enabled: Out of resources (other than memory)

कैमरा मॉड्यूल सही काम कर रहा है, मैंने बस कोड को कम से कम संभव आकार में तोड़ दिया। क्या कोई इस समस्या, या एक समान समस्या को जानता है, और शायद एक समाधान प्रदान कर सकता है? पायथन संस्करण 2.7 है और रास्पबेरी रसबीब-सिस्टम पूरी तरह अद्यतित है। अग्रिम धन्यवाद।

+1

मैंने एक और कैमरा मॉड्यूल के साथ एक और रास्पबेरी-पीआई पर इस व्यवहार की पुष्टि की। – Pepschmier

उत्तर

2

पता चला कि जब विनाशक को स्पष्ट रूप से नहीं कहा जाता है तो कैमरा-मॉड्यूल ठीक से बंद नहीं होता है (एलईडी बंद हो गया था, इसलिए इसे नहीं देखा गया)।

आईडीएल स्क्रिप्ट शुरू होने से पहले किसी भी तरह से इसे रीसेट करने से चलने वाला कैमरा संभालता है, लेकिन पाइथन दुभाषिया नहीं।

तो सब कुछ ठीक है जब विनाशक को स्क्रिप्ट समाप्त होने से पहले बुलाया जाता है।

+0

"विनाशक" से आपका मतलब कैमरा.क्लोस() विधि है, हां? – wil

3

मैंने घंटों तक इस के साथ संघर्ष किया, और "संसाधनों से बाहर" त्रुटि प्राप्त कर रही थी। मैं अंत में पता लगा है कि मेरी ले-चित्र समारोह में, मैं बनाने के लिए आवश्यक यकीन है कि मैं इसे इस तरह से किया था:

 
    camera = PiCamera() 
    (...camera settings here...) 
    camera.capture(myfileName) 
    camera.close() 

मैं पास() नहीं किया है, तो मुझे लगता है कि त्रुटि हर मिल चाहते हैं पहर। तो सुनिश्चित करें कि 'snap' के बाद कैमरा.क्लोस() को सही कहा जा रहा है। यह मेरे लिए समस्या हल हो गई।

संबंधित मुद्दे

 संबंधित मुद्दे