首页 > 解决方案 > Kivy 的最后一个相机帧仍然在屏幕上

问题描述

我写了一些启动和停止相机的代码。

当用户按下“停止相机”按钮时,视频成功停止。问题是最后一个视频帧保留在屏幕上。

用户停止相机后如何获得干净的背景?

在此处输入图像描述

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

标签: pythoncamerakivyframe

解决方案


是的Camera扩展Image,因此您可以更改textureCamera。尝试这样的事情:

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"

推荐阅读