Skip to content

Commit f5e0ecc

Browse files
committed
Camera Reader feels finished
1 parent 176a2d5 commit f5e0ecc

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

CameraReader.py

+41-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,51 @@
1-
import cv2
1+
import cv2 as cv
2+
3+
from threading import Thread
4+
from multiprocessing import Queue
25

36

47
class CameraReader:
5-
def __init__(self, output_file):
8+
def __init__(self, video_source, output_file):
9+
self.running = False
10+
11+
self.camera = cv.VideoCapture(video_source)
12+
if not self.camera.isOpened():
13+
print("Cannot open Camera")
14+
exit()
15+
16+
fourcc = cv.VideoWriter_fourcc(*'XVID')
17+
18+
# write to output file with the fourcc codec and 640x480@60fps
19+
self.writer = cv.VideoWriter(output_file, fourcc, 60.0, (640, 480))
20+
21+
self.frame_queue = Queue()
22+
23+
self.recording_thread = Thread(target=self.record)
24+
self.storing_thread = Thread(target=self.store)
625
pass
726

27+
def record(self):
28+
while self.running:
29+
ret, frame = self.camera.read()
30+
if not ret:
31+
print("Dropped frame")
32+
33+
self.frame_queue.put(frame)
34+
35+
def store(self):
36+
while self.running or not self.frame_queue.empty():
37+
self.writer.write(self.frame_queue.get())
38+
839
def start(self):
40+
self.running = True
41+
42+
self.storing_thread.start()
43+
self.recording_thread.start()
944
pass
1045

1146
def stop(self):
47+
self.running = False
48+
49+
self.recording_thread.join()
50+
self.storing_thread.join()
1251
pass

SerialReader.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import csv
22
import struct
3-
from datetime import datetime
43

54
from Frame import ShortRangeRadarFrameHeader, Frame, FrameError
5+
from datetime import datetime
66
from threading import Thread
77
from multiprocessing import Queue
88
from SerialInterface import SerialInterface

0 commit comments

Comments
 (0)