我正在使用IP摄像头.我可以使用这样的URL从相机中获取静态图像:
HTTP://用户名:密码@ IP_of_Camera:端口/流/信道/ 1 /图象
我想要做的是让python/flask在客户端加载页面时从该URL下载图像,并使用img标记将图像嵌入到页面中.
如果我有一个看起来像这样的模板:
<html>
<head>
<title>Test</title>
</head>
<body>
<img src="{{ image }}">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如何用下载的图像替换{{image}}?
我是否会使用urllib/requests将图像下载到flask的静态文件夹中,将{{image}}替换为类似的内容{{ url_for('static', filename="temp_image.png") }},然后在页面加载时从静态文件夹中删除图像?我会在其他地方下载它(静态文件夹除外)吗?或者还有其他方法可以将图像保存在内存中吗?
PS.我知道可以直接用该URL替换{{image}},但是会向客户端显示相机的用户名/密码/ IP /端口.
我会在烧瓶上添加一个屏蔽路径,直接取出并提供图像.让我们说domain.com/image/user1/cam1
您的服务器通常会向摄像机发出http请求,一旦收到响应,您就可以直接将其作为Response具有适当mimetype 的对象提供.
在这种情况下,从相机获取的图像驻留在RAM中.
@app.route('image/<userID>/<camID>')
def fun(userID,camID):
# fetch the picture from appropriate cam
pic = requests.get('http://'+
'Username:Password'+ # dynamically replace user id / password/ auth
'@IP_of_Camera:Port'+ #dynamically replace port / IP
'/streaming/channels/1/picture')
# do processing of pic here..
return Response(pic,mimetype="image/png")
Run Code Online (Sandbox Code Playgroud)
但是,如果需要一遍又一遍地提供此图像,那么您可能想要缓存它.在这种情况下,我会选择更接近你的方法的东西.
如果你想要流式传输相机图像,这是一个完全不同的球赛.