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

CameraImage 的扩展,因此您可以更改 Cameratexture。尝试这样的事情:

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"