在Flask Web中实现OpenCV网络摄像头脚本,可以按照以下步骤进行:
from flask import Flask, render_template, Response
import cv2
app = Flask(__name__)
def generate_frames():
camera = cv2.VideoCapture(0) # 打开摄像头,参数为设备索引号,0表示默认摄像头
while True:
success, frame = camera.read() # 读取摄像头帧
if not success:
break
ret, buffer = cv2.imencode('.jpg', frame) # 将帧编码为JPEG格式
frame = buffer.tobytes() # 转换为字节流
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') # 生成视频流
camera.release() # 释放摄像头
@app.route('/')
def index():
return render_template('index.html') # 返回HTML模板
@app.route('/video_feed')
def video_feed():
return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame') # 返回视频流
<!DOCTYPE html>
<html>
<head>
<title>OpenCV Video Streaming</title>
</head>
<body>
<h1>OpenCV Video Streaming</h1>
<img src="{{ url_for('video_feed') }}" width="640" height="480">
</body>
</html>
if __name__ == '__main__':
app.run(debug=True)
这样,当你访问应用程序的根路径时,将显示一个包含实时视频流的网页。通过Flask的路由和视图函数,以及OpenCV的视频流生成器函数,实现了在Flask Web中展示网络摄像头的功能。
腾讯云相关产品推荐:云服务器(https://cloud.tencent.com/product/cvm)和云函数(https://cloud.tencent.com/product/scf)可用于部署和扩展Flask应用程序。
领取专属 10元无门槛券
手把手带您无忧上云