WebcamVideoStream.py 1.3 KB
Newer Older
1 2 3
from threading import Thread
import cv2

Arne Gerdes's avatar
Arne Gerdes committed
4

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

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

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

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

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

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

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