import cv2 import numpy as np from flask import Flask from flask import Response, request from main import get_next_state HEIGHT = WIDTH = 100 app = Flask(__name__) def create_frame(generator): frame = next(generator) frame = np.stack((frame,)*3, axis=-1)*255 frame = frame.astype(np.int32).astype(np.float32) return frame def generate(r_a, factor, mask_ratio, organism_count, alpha_n, alpha_m, b1, b2, d1, d2, dt): gen = get_next_state(HEIGHT, WIDTH, r_a, factor, mask_ratio, alpha_n, alpha_m, b1, b2, d1, d2, dt, organism_count) while True: outputFrame = create_frame(gen) scale = 10 resized_frame = cv2.resize(outputFrame, (HEIGHT*scale, WIDTH*scale), interpolation=cv2.INTER_NEAREST) (flag, encodedImage) = cv2.imencode(".jpg", resized_frame) if not flag: continue yield(b'--frame\r\n'b'Content-Type:image/jpeg\r\n\r\n'+bytearray(encodedImage)+b'\r\n') @app.route("/", methods = ['GET']) def video_feed(): r_a = int(request.args.get('r_a') or 21) factor = int(request.args.get('factor') or 3) mask_ratio = float(request.args.get('mask_ratio') or 0.2) organism_count = int(request.args.get('organism_count') or 2) alpha_n = float(request.args.get('alpha_n') or 0.028) alpha_m = float(request.args.get('alpha_m') or 0.5) b1 = float(request.args.get('b1') or 0.05) b2 = float(request.args.get('b2') or 0.2) d1 = float(request.args.get('d1') or 0.05) d2 = float(request.args.get('d2') or 0.05) dt = float(request.args.get('dt') or 0.05) return Response(generate(r_a=r_a, factor=factor, mask_ratio=mask_ratio, organism_count=organism_count, alpha_n=alpha_n, alpha_m=alpha_m, b1=b1, b2=b2, d1=d1, d2=d2, dt=dt), mimetype = "multipart/x-mixed-replace;boundary=frame")