在 Python OpenCV 中访问网络摄像机

新手上路,请多包涵

如何访问我的网络摄像机流?

显示标准网络摄像头流的代码是

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我如何使用网络摄像机做同样的事情?

我的系统:

  • 蟒蛇 2.7.14
  • OpenCV 2.4.9
  • Teledyne Dalsa Genie Nano XL 相机

您可以使用视频捕获对象作为

camera = cv2.VideoCapture("IP:PORT/video")

原文由 Employee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

我回答了我自己的问题报告,因此似乎是在 Python OpenCV 中访问 IP 摄像机的 最全面 的整体过程。

给定一个网络摄像机:

  • 找到你的摄像头 IP 地址
  • 找到访问IP地址的 port
  • 找到摄像头提供商指定的 protocol (HTTP/RTSP等)

然后,如果您的相机受到保护,请继续查找:

  • 你的 username
  • 你的 password

然后使用您的数据运行以下脚本:

 """Access IP Camera in Python OpenCV"""

import cv2

stream = cv2.VideoCapture('protocol://IP:port/1')

# Use the next line if your camera has a username and password
# stream = cv2.VideoCapture('protocol://username:password@IP:port/1')

while True:

    r, f = stream.read()
    cv2.imshow('IP Camera stream',f)

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

cv2.destroyAllWindows()

注意:在我最初的问题中,我指定要使用 Teledyne Dalsa Genie Nano XL Camera 。不幸的是,对于这种摄像机,这种访问 IP 摄像机视频流的正常方式不起作用,必须使用 Sapera SDK 才能从设备中抓取帧。

原文由 Employee 发布,翻译遵循 CC BY-SA 4.0 许可协议

通过在 cv2.VideoCapture 的构造函数中提供摄像机的流 URL,可以在 opencv 中访问 IP 摄像机。

通常,摄像机使用 RTSP 或 HTTP 协议来传输视频。网络摄像机流媒体URL示例如下:

rtsp://192.168.1.641

它可以用 OpenCV 像这样打开:

 capture = cv2.VideoCapture('rtsp://192.168.1.64/1')

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

 capture = cv2.VideoCapture('rtsp://username:password@192.168.1.64/1')

原文由 sgarizvi 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题