gpt4 book ai didi

python - 从IP摄像机馈送OpenCV的VideoCapture发生故障

转载 作者:行者123 更新时间:2023-12-02 17:19:15 25 4
gpt4 key购买 nike

我只是试图通过OpenCV的简单代码读取IP Camera实时流,即如下所示:

import numpy as np
import cv2

src = 'rtsp://id:pass@xx.xx.xx.xx'

cap = cv2.VideoCapture(src)

while(True):
# Capture frame-by-frame
ret, frame = cap.read()

# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
这里的问题是,有时它会通过显示正在运行的实时视频来起到吸引人的作用,但有时它会创建许多空白窗口,这些窗口一直弹出直到工作被杀死。如下图所示:
enter image description here
为什么会发生,又如何避免呢?

最佳答案

也许您应该涵盖视频捕获无法建立健康流的情况。
请注意,即使打开视频捕获,在某些情况下也可能不会接收到帧。这可能是由于各种原因而发生的,例如网络流量拥塞,计算资源不足,某些IP摄像机的节能模式。
因此,建议您检查一下框架的大小,并确保您的VideoCapture对象接收到的框架形状正确。 (您可以调试并查看可见帧的大小,以了解相机的预期分辨率。)
像下面这样改变循环可能会有所帮助

min_expected_frame_size = [some integer]
while(cap.isOpened()):
ret, frame = cap.read()

width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

if ret==True and ((width*height) >= min_expected_frame_size):
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break

关于python - 从IP摄像机馈送OpenCV的VideoCapture发生故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63067848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com