2016-07-18 6 views
1

У меня есть приложение Kivy, и я пытаюсь взять видео с камеры веб-камеры, чтобы поместить его в мое приложение на своем компьютере. Я получил этот код в Интернете, который был: -Ошибка Kivy Камера Веб-камера дает ошибку VideoCapture: Разрешение не найдено

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() 

Я получаю ошибку о том, что видеозахвата: Разрешение не найден в kivy/ядра/камеры/camera_videocaputure. Я связал, чтобы выяснить много разных способов, но я не мог решить запрос. Было бы здорово, если бы кто-нибудь мог мне помочь. Благодаря !

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] также не работает только дает мне пустой экран. Если кто-то пробует это, пожалуйста, настройте, если это сработает для них? Есть ли другой способ заставить камеру работать?

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() 

Приведенный выше код работает для меня, но я не знаю, как изменить его на файл kivy. Поэтому я был бы признателен за любую помощь. Благодарю. Я сделал снимок, и разрешение камеры было 1920 x 1080. Я просто подумал, что это может помочь.

+0

Спасибо за редактирование! – arnav

+0

Можете вы добавить полную ошибку/traceback? – syntonym

+0

Что произойдет, если вы удалите строку разрешения? – syntonym

ответ

0

У меня нет репутации комментатора, поэтому я оставлю это здесь. Оба ваших сценария отлично работают на моем ноутбуке. Я пробовал несколько разрешений, и все они поддерживаются: 1920x1080, 640x480, 320x240. Проверьте версии киви и OpenCV. Шахта: OpenCV 2.4.12 Kivy v1.9.0 Python v2.7.8

+0

Я, конечно же, попробую его, и если нет, я буду устанавливать разные версии. Не могли бы вы также рассказать мне, в какой ОС вы работаете. Я использую 64-битную Windows 10 Я надеюсь, что это не вызовет проблемы. Также вы могли бы рассказать мне, какой компьютер вы используете? Возможно, я смогу проверить спецификации камеры – arnav

+0

Я работаю на 64-битной Windows 7, и на самом деле ОС не должна вызывать такой проблема. – dizcza

+0

Привет, я добавил те же версии, но все равно дает мне ошибку. Я чувствую, что есть проблема с моим kivy-файлом video_capture, потому что он продолжает давать мне ошибку. Я также попытался использовать внешнюю камеру. В любом случае я могу решить проблему? – arnav

0

Привет, так что я запустил программу на Windows 7, и это работает! Я не уверен, была ли проблема ОС или нет, но она работает. Поэтому, если кто-то заставляет его работать в Windows 8 или 10, прокомментируйте. Я потратил много времени на отладку и не смог заставить его работать над этими двумя ОС. Хорошо, в любом случае, спасибо, что он работает, и спасибо вам за ответ. Это было действительно полезно. Я поднял вас, но он не появляется из-за моей низкой репутации.