tjy/demo/core/storage_thread.py

29 lines
824 B
Python
Raw Normal View History

2024-07-16 16:28:35 +08:00
from PyQt5.QtCore import QThread, pyqtSignal
from collections import deque
import numpy as np
class StorageThread(QThread):
frames_ready = pyqtSignal(np.ndarray)
def __init__(self, max_frames=300):
super().__init__()
self.frame_buffer = deque(maxlen=max_frames)
self.running = True
def run(self):
while self.running:
if len(self.frame_buffer) >= self.frame_buffer.maxlen:
frames = np.array(list(self.frame_buffer))
self.frames_ready.emit(frames)
self.frame_buffer.clear()
# print('Frames ready:', frames.shape)
self.msleep(100) # 休眠100ms
def store_frame(self, frame):
self.frame_buffer.append(frame)
def stop(self):
self.running = False
self.wait()