WebcamVideoStream.py 1.3 KB
Newer Older
1
from threading import Thread
Arne Gerdes's avatar
Arne Gerdes committed
2

3 4
import cv2

Arne Gerdes's avatar
Arne Gerdes committed
5

6 7
class WebcamVideoStream:
    def __init__(self, src=0):
Arne Gerdes's avatar
Arne Gerdes committed
8 9 10
        """
        initialisiere den Webcam Stream und liest den ersten Frame aus dem Stream
        """
11 12 13
        self.stream = cv2.VideoCapture(src)
        (self.grabbed, self.frame) = self.stream.read()

Arne Gerdes's avatar
Arne Gerdes committed
14 15 16
        """
        Initialisiere die Variable, die angibt, ob der Thread gestoppt werden soll
        """
17 18 19
        self.stopped = False

    def start(self):
Arne Gerdes's avatar
Arne Gerdes committed
20 21 22
        """
         starte den Thread, um Frames aus dem Webcam Stream zu lesen
        """
23 24 25 26
        Thread(target=self.update, args=()).start()
        return self

    def update(self):
Arne Gerdes's avatar
Arne Gerdes committed
27 28 29
        """
        Endloss Schleife, bis der Thread gestoppt wird
        """
30
        while True:
Arne Gerdes's avatar
Arne Gerdes committed
31 32 33
            """
            Wenn die Thread-Indikator-Variable gesetzt ist, stoppt diese den Thread
            """
34 35 36
            if self.stopped:
                return

Arne Gerdes's avatar
Arne Gerdes committed
37 38 39
            """
            Ansonsten wird der nächste Frame aus dem Stream gelesen
            """
40 41 42
            (self.grabbed, self.frame) = self.stream.read()

    def read(self):
Arne Gerdes's avatar
Arne Gerdes committed
43 44 45
        """
         gibt den zuletzt gelesenen Frame zurück
        """
46 47 48
        return self.frame

    def stop(self):
Arne Gerdes's avatar
Arne Gerdes committed
49 50 51 52
        """
         gibt an, dass der Thread gestoppt werden soll
        """
        self.stopped = True