Commit 0a7abc2c authored by jack's avatar jack

update

parent 15f161fe
#--utf8--
import time
import cv2
from queue import Queue
from threading import Thread
class Camera:
def __init__(self, device_id, frame_queue):
self.device_id = device_id
self.cam = cv2.VideoCapture(self.device_id)
self.frame_queue = frame_queue
self.is_running = False
self.fps = 0.0
self._t_last = time.time() * 1000
self._data = {}
def capture_queue(self):
self._t_last = time.time() * 1000
while self.is_running and self.cam.isOpened():
ret, frame = self.cam.read()
if not ret:
break
if self.frame_queue.qsize() < 1:
t = time.time() * 1000
t_span = t - self._t_last
self.fps = int(1000.0 / t_span)
self._data["image"] = frame.copy()
self._data["fps"] = self.fps
self.frame_queue.put(self._data)
self._t_last = t
def run(self):
self.is_running = True
self.thread_capture = Thread(target=self.capture_queue)
self.thread_capture.start()
def stop(self):
self.is_running = False
self.cam.release()
def show_frame(frame):
while True:
data = frame.get()
image = data["image"]
cv2.putText(image, "fps:{fps}".format(fps=data["fps"]), (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0 ,0))
cv2.namedWindow("camera", cv2.WINDOW_AUTOSIZE)
cv2.imshow("camera", image)
if cv2.waitKey(1)& 0xFF == ord('q'):
break
frame_queue.task_done()
if __name__ == "__main__":
frame_queue = Queue()
cam = Camera("rtsp://admin:admin12345@192.168.77.19:554/h264/ch1/main/av_stream", frame_queue)
cam.run()
thread_show = Thread(target=show_frame, args=(frame_queue,))
thread_show.start()
time.sleep(60)
cam.stop()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment