OpenCV cv2.VideoCapture() 停止读取 RTSP IP 摄像机

Posted

技术标签:

【中文标题】OpenCV cv2.VideoCapture() 停止读取 RTSP IP 摄像机【英文标题】:OpenCV cv2.VideoCapture() stopping to read RTSP IP camera 【发布时间】:2019-02-18 19:43:58 【问题描述】:

你好,我正在学习 opencv,我正在通过 rtsp:// 读取网络摄像机

videoStream = "rtsp://admin:123456@10.0.0.1:554/Streaming/Channels/1"
capture = cv2.VideoCapture(videoStream)

我正在阅读此流并在opencv 中进行面部检测 但在 1 或 2 分钟后,我的脚本崩溃并显示 h264 消息,而我的 opencv 代码给了我一个错误:

[h264 @ 0x27e49570] error while decoding MB 55 12, bytestream -12
no video

如果我使用 webcan 它不会发生

有人可以帮助我了解如何让 ip 摄像头流式传输以进行面部检测?

【问题讨论】:

我以较小的分辨率再次运行,它继续工作 4 分钟,但出现同样的错误。 [h264 @ 0xb4a5510] error while decoding MB 19 4, bytestream -7no video 请注意,OpenCV 本身并不处理这个问题。 H264 解码发生在您使用的任何后端,例如FFMPEG。尝试在没有 OpenCV 的情况下首先使用您使用的任何后端,看看问题是否仍然存在。请注意,这种类型的错误不太可能在 Stack Overflow 上被诊断出来,尤其是在信息很少的情况下——这不是您的简单错字或任何事情:)。参见例如:github.com/opencv/opencv/issues/13302 【参考方案1】:

在处理任何帧之前,您可以确保相机是打开的并且获得的帧是有效的。

videoStream = "rtsp://admin:123456@10.0.0.1:554/Streaming/Channels/1"
capture = cv2.VideoCapture(videoStream)

while True:
    if capture.isOpened():
        status, frame = capture.read()
        if status:
            # Process frames here
            ...

如果您无法访问相机或获取损坏的帧,您可以通过cv2.error 捕获此问题。

try:
   ...
except cv2.error as e:
   ...

【讨论】:

以上是关于OpenCV cv2.VideoCapture() 停止读取 RTSP IP 摄像机的主要内容,如果未能解决你的问题,请参考以下文章

Opencv python| cv. VideoCapture.get() 参数介绍

从网络摄像头捕获帧,它在 opencv cv2.VideoCapture() 中仅返回 1 帧

对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindo

OpenCV笔记:cv2.VideoCapture 完成视频的跳帧输出操作

如何使用 opencv VideoCapture 方法获取实时帧?

无法使用videoCapture opencv打开视频