如何修复opencv python cv2.VideoCapture rtsp onvif“服务器回复中的传输不匹配”错误?

Pro*_*wer 5 python opencv ffmpeg rtsp onvif

我在使用python 3.6.4的Windows上,通过pip安装了opencv(3.4)。这是我正在使用的代码:

import numpy as np
import cv2

cap = cv2.VideoCapture('rtsp://192.168.15.116:554/onvif1')

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

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

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[rtsp @ 03858a40] Nonmatching transport in server reply
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:808)
warning: rtsp://192.168.15.116:554/onvif1 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:809)
Run Code Online (Sandbox Code Playgroud)

我可以转到cmd并键入“ ffplay rtsp://192.168.15.116/onvif1”,视频将使用相同的rtsp地址在VLC中正常运行。使用cv2.VideoCapture(0)也可以与我的网络摄像头一起使用。

尝试将文件opencv_ffmpeg340.dll复制到所有路径文件夹,但仍然无济于事。还检查了构建,除gstreamer之外,所有视频I / O均显示为YES。我没主意了。

Law*_*wes 1

我使用 Microsoft 的 VCPKG 将 OPENCV 安装到 Windows 10 上。之后,OPENCV 工作正常 - 但它无法打开视频文件。

但没有成功,我尝试了很多建议。最后,对我有用的方法非常简单。我将 opencv 的 BIN 文件夹作为 PATH 包含在 Windows 环境系统变量中。就是这样。现在,视频文件可以正常打开和播放了。

  • 我明白了,不幸的是我也可以使用这样指定的视频文件运行 rtsp 协议。我的问题主要出在我的 onvif 网络摄像头上。但无论如何还是谢谢你,我相信这会对某人有所帮助。 (2认同)