2014-12-13 99 views
0

如果沒有安裝攝像機子系統,則Kivy在解析examples/camera.py演示的攝像機小部件時會崩潰。沒有崩潰,是否有電話查看是否會找到相機供應商?如何檢測Kivy是否安裝了攝像頭?

這裏是跟蹤:

[DEBUG    ] [Camera  ] Ignored <avfoundation> (import error) 
[DEBUG    ] [Camera  ] Ignored <opencv> (import error) 
[CRITICAL   ] [Camera  ] Unable to find any valuable Camera provider at all! 
[INFO    ] [Text  ] Provider: pygame 
Traceback (most recent call last): 
    File "camera.py", line 33, in <module> 
    CameraApp().run() 
    File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/app.py", line 766, in run 
    root = self.build() 
    File "camera.py", line 29, in build 
    return Builder.load_string(kv) 
    File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/lang.py", line 1522, in load_string 
    self._apply_rule(widget, parser.root, parser.root) 
    File "/Applications/Kivy.app/Contents/Resources/kivy/kivy/lang.py", line 1704, in _apply_rule 
    e)) 
kivy.lang.BuilderException: Parser: File "<inline>", line 7: 
... 
     5: Camera: 
     6:  id: camera 
>> 7:  resolution: 399, 299 
     8: 
     9: BoxLayout: 
... 
TypeError: 'NoneType' object is not callable 

回答

2

你可以換你的電話最初在try:..except塊:

camera_available = False 
try: 
    cam = kivy.camera() 
except TypeError: 
    cam = None 
if not cam is None and not cam.__camera is None: # Experiment has shown both checks are needed 
    camera_available = True 
# Anything that tries to use cam now needs to check camera_available 
+0

不幸的是,這是行不通的。由於級聯錯誤的一些奇怪的副作用:1)「嚴重錯誤」被報告爲導入kivy.uix.camera.Camera的副作用; 2)創建相機對象不會產生錯誤。 3)將分辨率設置爲[-1,-1]不會產生錯誤。 4)play = True或play = False不會產生錯誤。即使顯示相機小部件也不會產生錯誤,但只是一個空白屏幕。只嘗試將不存在的相機設置爲特定值會導致錯誤。 – 2014-12-25 07:57:53

+0

它看起來像我可以欺騙,並看看cam._camera,看看它是否爲無。 – 2014-12-25 08:49:08

+0

如果你不介意_你發現你做了這些工作,我會將其添加到上面的答案中,以保存給其他人。 – 2014-12-25 08:52:31

相關問題