我怎么可以使用Kivy(Python)相机

时间:2016-07-03 17:29:05

标签: python camera kivy

我尝试使用uix.camera小部件并从我的网络摄像头显示一些wideo。 我查看了文档并尝试使用这个简单的代码。但它只是向我展示了一个白色的creen withoud任何视频(我启用了播放)。 我做错了什么? 也许存在一些有用的docs \ tutorial(因为从官方文档中我了解了很多)。谢谢你的帮助。

import kivy
kivy.require('1.9.1')

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.camera import Camera

class MainApp(App):
    def build(self):
        return Camera(play=True)

if __name__== "__main__":
    MainApp().run()

5 个答案:

答案 0 :(得分:0)

您似乎需要在resolution=[x, y]之外设置play=True属性,因为默认属性不起作用。

答案 1 :(得分:0)

您需要指定分辨率。在我的情况下,我还需要指定index = 1,这是插入计算机的第二个相机。

示例:

import kivy
kivy.require('1.9.1')

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.camera import Camera

class MainApp(App):
    def build(self):
        return Camera(play=True, index=1, resolution=(640,480))

if __name__== "__main__":
    MainApp().run()

答案 2 :(得分:0)

以下是使用相机的Kivy examples

{{ page.content|process_text }}

Example 2: -

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


kv = ''' 
BoxLayout:
    orientation: 'vertical'

    Camera:
        id: camera
        resolution: 399, 299

    BoxLayout:
        orientation: 'horizontal'
        size_hint_y: None
        height: '48dp'
        Button:
            text: 'Start'
            on_release: camera.play = True

        Button:
            text: 'Stop'
            on_release: camera.play = False
'''


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


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

答案 3 :(得分:0)

我只是遇到了同样的问题,发现在为USB网络摄像头设备创建小部件时Kivy非常慢。 如果您已经正确设置了索引和其他参数,也许只是稍等一会,让Kivy创建视频小部件,那么您可以在窗口中看到网络摄像头视图显示,但是我仍在尝试找出Kivy这样做的原因。很长时间(大约一分钟)来创建USB网络摄像头小部件,希望有人可以对此问题提供一些建议。

答案 4 :(得分:0)

我尝试使用@Thiago建议的代码。它没有用,我怀疑它没有检测到我已插入Raspberry Pi4的USB摄像头。

以下是我正在使用的代码,我还在终端中运行了一个查询,以获取插入的摄像机类型(仅插入一个)。

代码:

import kivy

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.camera import Camera

class MainApp(App):
    def build(self):
        return Camera(play=True, index=0, resolution=(640,480))

if __name__== "__main__":
    MainApp().run()

端子输出:

pi@raspberrypi:~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'MJPG' (Motion-JPEG, compressed)
[1]: 'YUYV' (YUYV 4:2:2)