Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用OpenCV对IP摄像头进行身份验证_Python_Opencv_Authentication_Rtsp_Ip Camera - Fatal编程技术网

Python 如何使用OpenCV对IP摄像头进行身份验证

Python 如何使用OpenCV对IP摄像头进行身份验证,python,opencv,authentication,rtsp,ip-camera,Python,Opencv,Authentication,Rtsp,Ip Camera,我正在尝试使用OpenCV和使用RTSPURI的Python连接到IP摄像头(Dahua)。我在下面添加了一个示例代码(用户名、密码和ip在单独的变量中提供),这导致[rtsp@0x55cc3715c600]方法选项失败:401未经授权。使用VLC,我能够连接,但是只有在单独的对话框中输入密码之后,即使URI中已经提供了密码 我该如何继续 address = f'rtsp://{username}:{password}@{ip}' cap = cv2.VideoCapture(address)

我正在尝试使用OpenCV和使用RTSPURI的Python连接到IP摄像头(Dahua)。我在下面添加了一个示例代码(用户名、密码和ip在单独的变量中提供),这导致
[rtsp@0x55cc3715c600]方法选项失败:401未经授权
。使用VLC,我能够连接,但是只有在单独的对话框中输入密码之后,即使URI中已经提供了密码

我该如何继续

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

发现问题时,它与密码有一个特殊字符(%)有关,该字符应采用百分比编码(%25)。

从我的IP摄像头,我只需像这样格式化RTSP URI,然后将其放入
cv2.VideoCapture()
。我也在使用大华相机,但RTSP链接会因相机而异。这是我的一个例子
rtsp://username:password@192.168.1.25/axis介质/media.amp
。如果链接在VLC中工作,那么它应该在OpenCVIn VLC中工作。只有在收到的密码不正确的情况下,才会在单独的对话框中提示输入密码。尝试将地址硬编码为应该的地址,看看它是否仍然会给您带来问题。此外,如果您使用gstreamer编译opencv,您可以使用任何gstreamer管道,我使用的管道是:
vc=cv2.VideoCapture('rtspsrc location=rtsp://user:password@192.168.1.25:8554/play1.sdp!decodebin!videoconvert!appsink')
您应该能够通过gst启动测试此管道是否在opencv之外工作,如下所示:
gst-launch-1.0 rtspsrc位置=rtsp://user:password@192.168.1.25:8554/play1.sdp!德克宾!视频转换!自动视频接收器
rtsp://username:password@192.168.1.25
是我使用的格式,但是,它会导致VLC中出现提示,我必须再次输入密码。可能与密码名中的特殊字符有关:
%
?使用
gst-launch-1.0
命令也会导致
未经授权(401)
错误。