Emp*_*yee 16 python opencv ip-camera
如何访问我的IP Camera流?
用于显示标准网络摄像头流的代码是
import numpy as np
import cv2
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()
Run Code Online (Sandbox Code Playgroud)
我如何使用IP Camera做同样的事情?
我的系统:
帮助将受到高度赞赏
sga*_*zvi 17
通过在构造函数中提供摄像头的流URL,可以在opencv中访问IP摄像头cv2.VideoCapture.
通常,摄像机使用RTSP或HTTP协议来传输视频.IP摄像机流URL的示例如下:
RTSP://192.168.1.64/1
它可以用OpenCV打开,如下所示:
capture = cv2.VideoCapture('rtsp://192.168.1.64/1')
Run Code Online (Sandbox Code Playgroud)
大多数IP摄像机都有用户名和密码来访问视频.在这种情况下,必须在流URL中提供凭据,如下所示:
capture = cv2.VideoCapture('rtsp://username:password@192.168.1.64/1')
Run Code Online (Sandbox Code Playgroud)
要访问网络摄像机,首先,我建议您像使用标准应用程序一样安装它,无需任何代码,使用普通软件。
在此之后,您必须知道对于不同的相机,我们有不同的代码。有一个网站,您可以在其中查看可以使用哪些代码来访问它们:
https://www.ispyconnect.com/sources.aspx
但是要小心,对于我的相机(Intelbras S3020)它不起作用。正确的方法是询问您相机的公司,如果他们是一家好公司,他们会提供。
当您知道您的代码时,只需将其添加为:
cap = cv2.VideoCapture("http://LOGIN:PASSWORD@IP/cgi-bin/mjpg/video.cgi?&subtype=1")
Run Code Online (Sandbox Code Playgroud)
您将输入登录名而不是 LOGIN,您将输入密码而不是 PASSWORD。
要找出摄像机的 IP 地址,您可以下载许多软件并将 IP 地址提供给您。我使用 Intelbras 的软件,但我也推荐 EseeCloud,因为它们几乎适用于我购买的所有相机:
https://esecloud.software.informer.com/1.2/
在这个例子中,它显示了访问IP摄像头的协议http,但你也可以使用rstp,这取决于摄像头,正如我所说。
如果您有任何进一步的问题,请告诉我。
我回答我自己的问题,报告因此似乎是在 Python OpenCV 中访问 IP 摄像机的最全面的整体程序。
给定一个 IP 摄像头:
IP地址port访问IP地址的地方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()
Run Code Online (Sandbox Code Playgroud)
注意:在我最初的问题中,我指定使用Teledyne Dalsa Genie Nano XL 相机。不幸的是,对于此类摄像机,这种访问 IP 摄像机视频流的正常方式不起作用,必须使用Sapera SDK才能从设备抓取帧。
小智 7
这适用于我的IP摄像机:
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()
Run Code Online (Sandbox Code Playgroud)
请注意,我添加了摄像机的用户名(admin)和密码(123456),并在URL(admin:123456 @)的IP地址之前以@符号结尾。
首先找出你的IP摄像机的流媒体网址,比如是否是RTSP/HTTP等.
代码更改如下:
cap = cv2.VideoCapture("ipcam_streaming_url")
Run Code Online (Sandbox Code Playgroud)
例如:
cap = cv2.VideoCapture("http://192.168.18.37:8090/test.mjpeg")
Run Code Online (Sandbox Code Playgroud)
小智 6
通过IP摄像机流视频的最简单方法!
我只是编辑您的示例。您必须替换IP并添加/video链接。并继续您的项目
import cv2
cap = cv2.VideoCapture('http://192.168.18.37:8090/video')
while(True):
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法访问大多数网络摄像机。
import cv2
# insert the HTTP(S)/RSTP feed from the camera
url = "http://username:password@your_ip:your_port/tmpfs/auto.jpg"
# open the feed
cap = cv2.VideoCapture(url)
while True:
# read next frame
ret, frame = cap.read()
# show frame to user
cv2.imshow('frame', frame)
# if user presses q quit program
if cv2.waitKey(1) & 0xFF == ord("q"):
break
# close the connection and close all windows
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)