如何使用 OpenCV 对网络摄像机进行身份验证

How to authenticate to IP camera using OpenCV

我正在尝试使用 OpenCV 和 Python 使用 RTSP URI 连接到网络摄像机 (Dahua)。我在下面添加了一个示例代码(用户名、密码和 ip 在单独的变量中提供),结果是 [rtsp @ 0x55cc3715c600] method OPTIONS failed: 401 Unauthorized。使用 VLC,我能够连接,但是只有在单独的对话框中输入密码后,即使 URI 中已经提供了密码。

我该如何继续?

address = f'rtsp://{username}:{password}@{ip}'
cap = cv2.VideoCapture(address)

发现问题,密码有特殊字符(%),应该是百分比编码(%25)。

如果您的密码包含 !"#$%&'()*+,-./:;<=>?@[\]^_{|}~ 等字符,则问题可能出在 cv2.VideoCapture()

您可以尝试使用imutils库来解决这个问题。这对我有用。

from imutils.video import VideoStream
cap = VideoStream(video_src).start()
frame = cap.read()