我正在使用Kivy和网络摄像头。我按照@ Arnav的这个示例,使用opencv形成和显示相机作为小部件。我已经在python中“扩展”了布局,以添加两个按钮作为测试,为更复杂的布局做准备。
class CamApp(App):
def build(self):
self.capture = cv2.VideoCapture(0)
self.my_camera = KivyCamera(capture=self.capture, fps=30,resolution=(1920,1080))
root = BoxLayout(orientation = 'vertical')
root.add_widget(self.my_camera,1)
box2 = BoxLayout(orientation = 'vertical')
btn1 = Button(text='Hello world 1')
btn2 = Button(text='Hello world 2')
box2.add_widget(btn1)
box2.add_widget(btn2)
root.add_widget(box2, 0)
return root
#return Builder.load_string(kv)
虽然这样做可以运行,但我更希望将UI组件从python移动到kv语言文件中。
问题是如何在kv文件中“描述”self.my_camera
?
我不确定是否应该将KivyCamera
类作为widget
在kv
文件中继承。
kv = '''
<Cam1@KivyCamera>:
texture: self.my_camera
resolution: (1920, 1080)
pos: self.pos
size: self.size
是否使用canvas
小部件
<MyWidget>:
canvas:
Rectangle:
source: self.my_camera
pos: self.pos
size: self.size
我尝试过其他“破解”实现方式,但在所有情况下,问题都是通过
self.my_camera
链接到kv
文件中。有什么建议吗?
Window.clearcolor = (.4,.4,.4,1)
。 - tomdertech[WARNING] [GL ] BGRA 纹理支持不可用 Exception Exception: Exception('无法为纹理分配内存(大小为921600)',) in 'kivy.graphics.texture.Texture.allocate' ignored
我应该发起另一个问题吗? - tomdertech