2016-07-18 19 views
1

Ich habe eine Kivy App und ich versuche ein Video von meiner Webcam Kamera zu nehmen, um es in meine Anwendung auf meinem Computer zu bringen. Ich habe diesen Code online, die lautete: -Kivy Fehler Kamera Webcam gibt Fehler VideoCapture: Auflösung nicht gefunden

from kivy.app import App 
from kivy.lang import Builder 

kv = ''' 
BoxLayout: 
    orientation: 'vertical' 
    Camera: 
     id: camera 
     resolution: (640, 480) 
     play: False 
    ToggleButton: 
     text: 'Play' 
     on_press: camera.play = not camera.play 
     size_hint_y: None 
     height: '48dp' 
''' 


class TestCamera(App): 
    def build(self): 
     return Builder.load_string(kv) 

TestCamera().run() 

Ich erhalte eine Fehlermeldung, dass die Videocapture besagt: Auflösung nicht in Kivy/core/Kamera/camera_videocaputure gefunden. Ich habe viele verschiedene Möglichkeiten gefunden, aber ich konnte die Abfrage nicht lösen. Es wäre toll, wenn mir jemand helfen könnte. Vielen Dank !

Der Fehler ist Traceback:

Traceback (most recent call last): 
File "C:\Users\User\Desktop\personal work\BinaryHeap.py", line 23, in  <module> 
    TestCamera().run() 


    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\app.py", line 802, in run 
    root = self.build() 
    File "C:\Users\User\Desktop\personal work\BinaryHeap.py", line 21, in build 
    return Builder.load_string(kv) 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\lang.py", line 1921, in load_string 
    self._apply_rule(widget, parser.root, parser.root) 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\lang.py", line 2130, in _apply_rule 
    e), cause=tb) 
BuilderException: Parser: File "<inline>", line 6: 
... 
     4: Camera: 
     5:  id: camera 
>> 6:  resolution: (640, 480) 
     7:  play: False 
     8: ToggleButton: 
... 
Exception: VideoCapture: Resolution not supported 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\lang.py", line 2123, in _apply_rule 
    setattr(widget_set, key, value) 
    File "kivy\weakproxy.pyx", line 22, in kivy.weakproxy.WeakProxy.__setattr__ (kivy\weakproxy.c:1235) 
    File "kivy\properties.pyx", line 408, in kivy.properties.Property.__set__ (kivy\properties.c:5114) 
    File "kivy\properties.pyx", line 733, in kivy.properties.ListProperty.set (kivy\properties.c:11127) 
    File "kivy\properties.pyx", line 446, in kivy.properties.Property.set (kivy\properties.c:5876) 
    File "kivy\properties.pyx", line 501, in kivy.properties.Property.dispatch (kivy\properties.c:6557) 
    File "kivy\_event.pyx", line 1224, in kivy._event.EventObservers.dispatch (kivy\_event.c:13497) 
    File "kivy\_event.pyx", line 1130, in kivy._event.EventObservers._dispatch (kivy\_event.c:12696) 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\uix\camera.py", line 103, in _on_index 
    resolution=self.resolution, stopped=True) 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\core\camera\camera_videocapture.py", line 26, in __init__ 
    super(CameraVideoCapture, self).__init__(**kwargs) 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\core\camera\__init__.py", line 70, in __init__ 
    self.init_camera() 
    File "C:\Users\User\Desktop\personal work\Anaconda3\envs\py27\lib\site-packages\kivy\core\camera\camera_videocapture.py", line 36, in init_camera 
    raise Exception('VideoCapture: Resolution not supported') 

[-1, -1] auch nicht nur funktioniert bietet mir mit einem leeren Bildschirm. Wenn jemand es versucht, bitte teme, wenn es für sie funktioniert? Gibt es eine andere Möglichkeit, die Kamera zum Laufen zu bringen?

from kivy.app import App 
from kivy.uix.image import Image 
from kivy.clock import Clock 
from kivy.graphics.texture import Texture 
import cv2 
from kivy.uix.camera import Camera 

class KivyCamera(Image): 
    def __init__(self, capture, fps, **kwargs): 
     super(KivyCamera, self).__init__(**kwargs) 
     self.capture = capture 
     Clock.schedule_interval(self.update, 1.0/fps) 

    def update(self, dt): 
     ret, frame = self.capture.read() 
     if ret: 
      # convert it to texture 
      buf1 = cv2.flip(frame, 0) 
      buf = buf1.tostring() 
      image_texture = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='bgr') 
      image_texture.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte') 
      # display image from the texture 
      self.texture = image_texture 


class CamApp(App): 
    def build(self): 
     self.capture = cv2.VideoCapture(0) 
     self.my_camera = KivyCamera(capture=self.capture, fps=30) 
     return self.my_camera 

    def on_stop(self): 
     #without this, app will not exit even if the window is closed 
     self.capture.release() 


CamApp().run() 

Der obige Code funktioniert für mich, aber ich weiß nicht, wie man es in eine Kivy-Datei ändert. Also ich würde jede Hilfe schätzen. Vielen Dank. Ich machte ein Foto und meine Kameraauflösung war 1920 x 1080. Ich dachte nur, dass es helfen könnte.

+0

Danke für die Bearbeitung! – arnav

+0

Können Sie den vollständigen Fehler/Traceback hinzufügen? – syntonym

+0

Was passiert, wenn Sie die Auflösungszeile löschen? – syntonym

Antwort

0

Ich habe nicht den Ruf zu kommentieren, also werde ich es hier lassen. Beide Skripte funktionieren gut auf meinem Laptop. Ich habe mehrere Auflösungen versucht und alle werden unterstützt: 1920x1080, 640x480, 320x240. Überprüfen Sie Ihre kivy und OpenCV-Versionen. Meine ist: OpenCV 2.4.12 Kivy v1.9.0 Python v2.7.8

+0

Ich werde es sicherlich versuchen und wenn nicht, werde ich die verschiedenen Versionen installieren. Könnten Sie mir auch sagen, auf welchem ​​Betriebssystem Sie laufen. Ich verwende ein 64-Bit-Windows 10 Ich hoffe, dass das kein Problem verursacht.Auch könnten Sie mir sagen, welchen Computer Sie verwenden? Ich könnte in der Lage sein, die Spezifikationen für die Kamera zu überprüfen – arnav

+0

Ich bin auf 64-Bit-Windows 7 laufen und eigentlich OS sollte nicht so ein verursachen Problem. – dizcza

+0

Hallo Ich habe die gleichen Versionen hinzugefügt, aber es gibt mir immer noch einen Fehler. Ich habe das Gefühl, dass es ein Problem mit meiner kivy-Datei video_capture gibt, weil es mir immer einen Fehler gibt. Ich habe versucht, auch eine externe Kamera zu verwenden. Kann ich das Problem irgendwie lösen? – arnav

0

Hallo so lief ich das Programm unter Windows 7 und es funktioniert! Ich bin mir nicht sicher, ob es ein Betriebssystemproblem war oder nicht, aber es funktioniert. Also, wenn jemand es für Windows 8 oder 10 funktioniert, bitte Kommentar. Ich habe viel Zeit damit verbracht, das zu debuggen und konnte es nicht auf diesen 2 Betriebssystemen laufen lassen. Nun, jedenfalls hat es funktioniert und danke für Ihre Antwort. Es war sehr hilfreich. Ich habe dich aufgezählt, aber es erscheint nicht wegen meines schlechten Rufs.