30 lines
779 B
Python
30 lines
779 B
Python
import cv2
|
|
import numpy as np
|
|
import gphoto2 as gp
|
|
from flask import Flask, Response
|
|
|
|
app = Flask(__name__)
|
|
|
|
camera = gp.Camera()
|
|
camera.init()
|
|
|
|
def generate():
|
|
while True:
|
|
file = camera.capture_preview()
|
|
data = file.get_data_and_size()
|
|
frame = np.frombuffer(data, dtype=np.uint8)
|
|
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
|
|
|
|
if frame is not None:
|
|
_, buffer = cv2.imencode('.jpg', frame)
|
|
yield (b'--frame\r\n'
|
|
b'Content-Type: image/jpeg\r\n\r\n' + buffer.tobytes() + b'\r\n')
|
|
|
|
@app.route('/liveview')
|
|
def liveview():
|
|
return Response(generate(),
|
|
mimetype='multipart/x-mixed-replace; boundary=frame')
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=5000)
|