【发布时间】:2018-06-02 18:50:25
【问题描述】:
我有一个函数可以在来自 IP 摄像机的 RTSP 流上调用 cv2.VideoCapture:
vidcap = cv2.VideoCapture("rtsp://usr:passw@my_camera:1234/")
然后从捕获的视频中获取帧,将它们转换为 jpeg 编码的字节数组,并通过生成器使它们可用:
if vidcap.isOpened():
try:
for x in iter(int, 1):
ret, frame = vidcap.read()
if ret:
print("Read Frame")
elif ret is False:
print("Frame Dropped")
converted = convert_image(frame, to_type=bytearray)
yield converted
定期调用此生成器:
for image in generator():
with open("/path/{}.jpg".format(datetime.datetime.now().strftime('%M-%S-%f')), 'wb') as f:
f.write(image)
f.close()
time.sleep(0.3)
问题在于,在查看保存的图像时,帧之间存在跳转。看起来该程序将快速连续抓取几张图像,停止录制一两秒钟,然后快速恢复并快速连续抓取几张图像。控制台从不打印“丢帧”,所以我认为这在相机端不是问题。这里出了什么问题,有没有办法以这种方式获得平滑、恒定的帧速率?提前谢谢你。
【问题讨论】:
标签: python-3.x opencv