Kivy 最后一个相机帧保留在屏幕上
Kivy last camera frame remains on screen
我写了一些启动和停止相机的代码。
当用户按下“停止摄像头”按钮时,视频成功停止。问题是最后一个视频帧留在屏幕上。
如何在用户停止相机后获得干净的背景?
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
Builder.load_string("""
<CameraScreen>:
GridLayout:
id: grid1
cols: 1
Camera:
id: camera
resolution: (640, 480)
play: False
ToggleButton:
id: camera_button
text: 'Start Camera'
on_press: root.play()
<RootWidget>:
canvas.before:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
CameraScreen:
id: camera_screen
name: "camera_screen"
""")
class CameraScreen(Screen):
def play(self):
if self.ids.camera.play == False:
self.ids.camera.play = True
self.ids.camera_button.text = "Stop Camera"
else:
self.ids.camera.play = False
self.ids.camera_button.text = "Start Camera"
class RootWidget(ScreenManager):
pass
class MainApp(App):
def build(self):
return RootWidget()
MainApp().run()
Camera
是 Image
的扩展,因此您可以更改 Camera
的 texture
。尝试这样的事情:
def play(self):
if self.ids.camera.play == False:
self.ids.camera.texture = self.ids.camera._camera.texture
self.ids.camera.play = True
self.ids.camera_button.text = "Stop Camera"
else:
self.ids.camera.play = False
self.ids.camera.texture = None
self.ids.camera_button.text = "Start Camera"
我写了一些启动和停止相机的代码。
当用户按下“停止摄像头”按钮时,视频成功停止。问题是最后一个视频帧留在屏幕上。
如何在用户停止相机后获得干净的背景?
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
Builder.load_string("""
<CameraScreen>:
GridLayout:
id: grid1
cols: 1
Camera:
id: camera
resolution: (640, 480)
play: False
ToggleButton:
id: camera_button
text: 'Start Camera'
on_press: root.play()
<RootWidget>:
canvas.before:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
CameraScreen:
id: camera_screen
name: "camera_screen"
""")
class CameraScreen(Screen):
def play(self):
if self.ids.camera.play == False:
self.ids.camera.play = True
self.ids.camera_button.text = "Stop Camera"
else:
self.ids.camera.play = False
self.ids.camera_button.text = "Start Camera"
class RootWidget(ScreenManager):
pass
class MainApp(App):
def build(self):
return RootWidget()
MainApp().run()
Camera
是 Image
的扩展,因此您可以更改 Camera
的 texture
。尝试这样的事情:
def play(self):
if self.ids.camera.play == False:
self.ids.camera.texture = self.ids.camera._camera.texture
self.ids.camera.play = True
self.ids.camera_button.text = "Stop Camera"
else:
self.ids.camera.play = False
self.ids.camera.texture = None
self.ids.camera_button.text = "Start Camera"