最近在读取相机RTSP流,发现OpenCV不如使用imutils包读取的快:
import _thread
from imutils.video import VideoStream
import imutils
import time
import numpy as np
import cv2
# # 为线程定义一个函数
def cam1( threadName):
cap = VideoStream('test.mp4').start()
n=0
while True:
img = cap.read()
n=n+1
cv2.putText(img, str(n), (50, 300), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255, 255, 255), 2)
cv2.imshow('frame11', img)
cv2.waitKey(1)
cap.release()
OpenCV读取方式:
def cam2(threadName):
n=0
cap = cv2.VideoCapture('test.mp4')
while True:
ret, img = cap.read()
if ret:
n = n + 1
cv2.putText(img, str(n), (50, 300), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255, 255, 255), 2)
cv2.imshow('frame22222222222', img)
cv2.waitKey(1)
cap.release()
如果开两个线程读取摄像头竟然不同步,于是读取同一段视频,发现一段视频上面读取380帧,OpenCV读取443帧,故得出如上读取方式存在丢帧现象,大家使用时谨慎使用。