现在我正在使用网络摄像头,它与以下代码完美配合 - :
capture = cv2.VideoCapture(0)
现在我要使用ip camera(https://192.168.0.60)而不是网络摄像头 用OpenCV(Python)做最简单的方法是什么?
我看了很多帖子,但无法找到答案。 有人可以帮助,谁已经让它运行了?
谢谢!
答案 0 :(得分:3)
首先,您必须找到视频流的确切网址,最好使用网络浏览器。例如,我在android(com.pass.webcam)上使用IP Webcam app,它的流将在:
http://phone-ip-address:port/video
如果我使用网络浏览器访问该网址,我可以看到直播。确保您所看到的内容仅视频流,而不是带有流的html页面。如果有html页面,您可以右键单击并选择在新标签中打开图像(在Chrome中)以转到该流。
然而,如果文件名/ url具有正确的后缀,OpenCV似乎只能读取视频流。添加?type = some.mjpeg对我有用。所以网址是:
http://phone-ip-address:port/video?type=some.mjpeg
在开始使用opencv之前,请尝试在网络浏览器中访问此类网址。
答案 1 :(得分:1)
使用python
,OpenCV
,IPCAM
和hikvision
import numpy as np
import cv2
cap = cv2.VideoCapture()
cap.open("rtsp://USER:PASS@IP:PORT/Streaming/Channels/2")
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('Salida',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
答案 2 :(得分:0)
您在这里,
import numpy as np
import cv2
cap = cv2.VideoCapture('rtsp://<username_of_camera>:<password_of_camera@<ip_address_of_camera')
while(True):
ret, frame = cap.read()
cv2.imshow('Stream IP Camera OpenCV',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
例如:
import numpy as np
import cv2
cap = cv2.VideoCapture('rtsp://admin:admin@192.168.0.60')
while(True):
ret, frame = cap.read()
cv2.imshow('Stream IP camera opencv',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
然后将文件另存为camera.py(.py),转到命令提示符或终端,找到文件并键入python camera.py
或python <file_name>.py
输入以运行脚本。
如果要退出脚本窗口,请按“ q”或关闭cmd。
希望对您有所帮助。
答案 3 :(得分:0)
这里是Vivotek IP8136W IP摄像机的示例。它不支持流式传输。
此代码以约2fps的速度连续捕获静止帧。没有观察到CPU负载。
import numpy as np
import cv2
# for webcams, request stream only once.
#cap = cv2.VideoCapture(0)
while(True):
# For single image IP cams, request frame every time.
cap = cv2.VideoCapture("http://root:0002A78D65F2@192.168.1.38/cgi-bin/viewer/video.jpg")
ret, frame = cap.read()
# Display the resulting frame
if ret:
cv2.imshow('camera',frame)
else:
print("error getting frame.")
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Done. release the capture
cap.release()
cv2.destroyAllWindows()