如何从Python cv2中的Internet URL读取图像?
import cv2.cv as cv
import urllib2
from cStringIO import StringIO
import PIL.Image as pil
url="some_url"
img_file = urllib2.urlopen(url)
im = StringIO(img_file.read())
Run Code Online (Sandbox Code Playgroud)
不好,因为Python向我报告:
TypeError: object.__new__(cStringIO.StringI) is not safe, use cStringIO.StringI.__new__
Run Code Online (Sandbox Code Playgroud) 参考这个类似的问题How to parse mjpeg http stream from ip camera? 我能够使用requests以下命令从 IP 摄像机读取流:
stream = requests.get('http://<user>:<pass>@<addr>:<port>/videostream.cgi', stream=True)
bytez = ''
while True:
bytez += stream.raw.read(16384)
...
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但想通过使用cv2.VideoCapture()请求来实现。
我尝试了以下方式的变化:
cap = cv2.VideoCapture()
cap.open('http://<user>:<pass>@<addr>:<port>/videostream.cgi?.mjpg')
while(True):
ret, frame = cap.read()
...
Run Code Online (Sandbox Code Playgroud)
但无法得到任何东西,但关于空帧的异常。
如何使用 cv2.VideoCapture() 读取 IP 摄像机流?