2014-12-13 3 views
0

카메라 하위 시스템이 설치되어 있지 않으면 카메라 위젯 examples/camera.py 데모를 구문 분석 할 때 Kivy가 충돌합니다. 충돌하는 대신 카메라 제공 업체가 있는지 확인하라는 요청이 있습니까?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가 오류를 발생시키지 않습니다. 카메라 위젯을 표시해도 오류는 발생하지 않지만 빈 화면 만 표시됩니다. 존재하지 않는 카메라를 특정 값으로 설정하려고하면 오류가 발생합니다. –

+0

내가 속임수를 쓰고 cam._camera를 보아 그것이 None인지 알 수있는 것처럼 보입니다. –

+0

당신이 그 일을했다고 생각하지 않는다면 나는 그것을 다른 사람들을 위해 보존하기 위해 위의 대답에 추가 할 것입니다. –

관련 문제