我正在测试一个小python脚本,通过RTSP从IP摄像机捕获图像。我可以通过VLC正常打开视频,并通过CLI使用ffmpeg,但使用OpenCV与Python3,我得到错误:OpenCV: Couldn't read video stream from file "rtsp://admin:admin123456@192.168.15.2:8554/profile0 "
另外,我可以用python脚本打开本地。mp4视频。这似乎是一个问题,当使用RTSP与opencv。
代码如下:
import cv2
import os
os.environ['OPENCV_FFMPEG_CAPTURE_OPTIONS'] = 'rtsp_transport;udp' # Use tcp instead of udp if stream is unstable
cap = cv2.VideoCapture("rtsp://admin:admin123456@192.168.15.2:8554/profile0")
if not cap.isOpened():
print('Cannot open RTSP stream')
exit(-1)
while True:
success, img = cap.read()
cv2.imshow('RTSP stream', img)
if cv2.waitKey(1) & 0xFF == ord('q'): # Keep running until you press `q`
cap.release()
break
cv2.destroyAllWindows()
尝试运行python脚本,我得到错误:OpenCV: Couldn't read video stream from file rtsp://admin:admin123456@192.168.15.2:8554/profile0"
我在MacOS 12.5上也有类似的问题。
我的cv2.getBuildInformation()
上有FFMPEG: YES
,但仍然得到错误OpenCV: Couldn't read video stream from file
。
然而,使用相同的conda环境(相同的opencv-python
版本),但通过jupyter笔记本而不是脚本不会出现错误,并且文件读取没有问题!
解决:
我的问题是VS Code没有权限访问磁盘。这解决了我的问题,除了我需要给VSCode权限,而不是终端:https://stackoverflow.com/a/59250494/20581881
见截图