adding cam viewer
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
import io
|
||||||
|
from flask import Flask, Response
|
||||||
|
from picamera2 import Picamera2
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
WIDTH, HEIGHT = 640, 400
|
||||||
|
|
||||||
|
cam = Picamera2()
|
||||||
|
cam.configure(cam.create_video_configuration(
|
||||||
|
main={"size": (WIDTH, HEIGHT), "format": "YUV420"},
|
||||||
|
controls={"FrameRate": 30}))
|
||||||
|
cam.start()
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def frames():
|
||||||
|
while True:
|
||||||
|
gray = cam.capture_array("main")[:HEIGHT, :WIDTH] # Y plane = greyscale image
|
||||||
|
buf = io.BytesIO()
|
||||||
|
Image.fromarray(gray).save(buf, format="JPEG", quality=70)
|
||||||
|
yield b"--frame\r\nContent-Type: image/jpeg\r\n\r\n" + buf.getvalue() + b"\r\n"
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def index():
|
||||||
|
return ('<html><body style="margin:0;background:#111">'
|
||||||
|
'<img src="/stream" style="width:100%"></body></html>')
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/stream")
|
||||||
|
def stream():
|
||||||
|
return Response(frames(), mimetype="multipart/x-mixed-replace; boundary=frame")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
try:
|
||||||
|
app.run(host="0.0.0.0", port=8000, threaded=True)
|
||||||
|
finally:
|
||||||
|
cam.stop()
|
||||||
Reference in New Issue
Block a user