前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用OpenCV在Python中访问IP摄像头

如何使用OpenCV在Python中访问IP摄像头

作者头像
小白学视觉
发布2020-09-14 15:21:17
6.5K0
发布2020-09-14 15:21:17
举报
文章被收录于专栏:深度学习和计算机视觉

在此文章中,我将解释如何在Python中设置对IP摄像机流的访问。

首先,必须找出网址流是什么。通过在构造函数中提供摄像机的网址流,可以在OpenCV中访问IP摄像机cv2.VideoCapture。可以使用某些网络扫描实用程序(例如在linux上的arp-scan)找到摄像机的IP地址。网址进一步的细节,如ProtocolCredentialsChannel应该可以在相机说明书或软件/手机应用程序中找到。我们通过在网络上搜索相机的型号来找到相机的网址流。

通常,摄像机使用RTSP或HTTP协议来传输视频。IP摄像机网址流的示例如下所示:rtsp://192.168.1.64/1

因此,可以通过以下代码实现使用OpenCV从相机获取快照:

代码语言:javascript
复制
capture = cv2.VideoCapture('rtsp://192.168.1.64/1')

由于大多数IP摄像机都有用于访问视频的用户名和密码。在这种情况下,必须在网址流中提供凭据,如下所示:

代码语言:javascript
复制
capture = cv2.VideoCapture('rtsp://[username]:
[password]@192.168.1.64/1')

这是整个脚本,可以实现通过OpenCV捕获来自摄像机的视频流:

代码语言:javascript
复制
import cv2

#print("Before URL")
cap = cv2.VideoCapture('rtsp://admin:123456@192.168.1.216/H264?ch=1&subtype=0')
#print("After URL")

while True:

    #print('About to start the Read command')
    ret, frame = cap.read()
    #print('About to show frame of Video.')
    cv2.imshow("Capturing",frame)
    #print('Running..')

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我们需要启动'While True'循环以显示流。在循环中启动它很重要,这样可以中断循环以按需释放流。

命令'cv2.imshow'用于显示视频流。

命令'cv2.imshow'带有两个参数。第一个是要显示在窗口顶部的名称。可以将其更改为所需的任何内容,但是最好拥有它。第二个是存储捕获视频流的对象。在此示例中,它称为“帧”。

然后,这个脚本会查找按键。因此,当按下q键时,它将释放捕获的流,然后运行'cv2.destroyAllWindows()'。如果脚本中没有该部分,则可能最终导致流在PC上引起大量延迟,直到强制关闭该流或该流因自然原因而死亡。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档