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