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