我有一个 RTPS 流媒体摄像头。当我用 VLC 测试时,该流工作正常:
vlc -vvv rtsp://192.168.0.23:554/stream
但是使用 openCV 它无法打开:
cv::VideoCapture capture;
bool ok = capture.open("rtsp://192.168.0.23:554/stream");
返回错误。
可能是什么原因?
我也有类似的问题。就我而言,运行路径中缺少以“opencv_ffmpeg”开头的 dll。
如果您使用
OpenCV 4+
,您需要复制 ffmpeg
相关的 dll
并将其粘贴到可执行文件旁边。例如,我使用 OpenCV
选项构建了 BUILD_opencv_world
,并且我的 opencv_videoio_ffmpeg430_64.dll
目录中的 bin
文件夹中有一个名为 build
的文件。如果没有该文件,它将无法打开流并且不显示任何内容。
在 MacOS 上,这个解决方案适合我。
os.environ['OPENCV_FFMPEG_CAPTURE_OPTIONS'] = 'rtsp_transport;http'
传输不是TCP,而是HTTP
在 OpenCV 4 中使用 VideoCaptuer 类时,在 C++ 中,它不适用于 RTSP 流。
你可以通过 OpenCV 和 python 来完成,如下所示:
import cv2
str1=cv2.VideoCapture("RTSP Address")
while True:
_,frame=str1.read()
cv2.imshow('SOMENAME',frame)
s=cv2.waitkey(0)