Skip to content

Instantly share code, notes, and snippets.

@ExpandOcean
Created January 7, 2015 06:48
Show Gist options
  • Save ExpandOcean/de261e66949009f44ad2 to your computer and use it in GitHub Desktop.
Save ExpandOcean/de261e66949009f44ad2 to your computer and use it in GitHub Desktop.

Revisions

  1. ExpandOcean created this gist Jan 7, 2015.
    40 changes: 40 additions & 0 deletions kivy_cv.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    # coding:utf-8
    from kivy.app import App
    from kivy.uix.image import Image
    from kivy.clock import Clock
    from kivy.graphics.texture import Texture
    import cv2


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


    if __name__ == '__main__':
    CamApp().run()