我在Windows上使用python 3.6.4,通过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()
我收到以下错误:
[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)
我可以转到cmd并键入“ffplay rtsp://192.168.15.116/onvif1”,视频将使用相同的rtsp地址和VLC一起运行。使用cv2.VideoCapture(0)也适用于我的网络摄像头。
尝试将文件opencv_ffmpeg340.dll复制到所有路径文件夹中,但仍无济于事。还检查了构建和所有视频I / O显示为YES,除了gstreamer。我没有想法。
答案 0 :(得分:1)
我使用微软的VCPKG将OPENCV安装到Windows 10上。之后,OPENCV工作正常 - 除了它不会打开视频文件。
没有成功,我尝试了很多建议。最后,对我有用的东西非常简单。我在Windows环境系统变量中将opencv的BIN文件夹作为PATH包含在内。而已。现在,视频文件打开并播放得很好。
答案 1 :(得分:0)
我刚刚遇到这个问题,在挖掘之后看起来OPENCV 3.1+默认为TCP用于RTSP传输(我的ESCAM QF600仅支持RTSP over UDP)。您可以通过将环境变量OPENCV_FFMPEG_CAPTURE_OPTIONS设置为某些内容(例如虚拟)来防止这种情况发生。
为了完整;有关可以设置的所有选项,请参阅https://ffmpeg.org/ffmpeg-protocols.html。键和值由';'分隔。和对通过' |'。
分开违规代码从cap_ffmpeg_impl.hpp的第809行开始 (https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp)
支持以下帖子向我发送正确的方向: