Backg / app.py
LapStore
modified back mGE STEP 1 try
4b98217
raw
history blame
3.27 kB
from fastapi import FastAPI ,Request ,Form, UploadFile, File
from fastapi.responses import HTMLResponse, FileResponse,StreamingResponse,JSONResponse
import os
import io
from PIL import ImageOps,Image ,ImageFilter
#from transformers import pipeline
import matplotlib.pyplot as plt
import numpy as np
import ast
from server import *
import cv2
from typing import Optional
#http://localhost:8000
app = FastAPI()
# Root route
@app.get('/')
def main():
return "Hello World taha"
##### use space /tmp/ ...
@app.post('/imageStep1')
async def image_step1(image_file: UploadFile = File(...),background_image: Optional [UploadFile] = File(None),type_of_filters: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)):
input_to_type_of_filters=None
if background_image and background_image.filename:
contents__back = await background_image.read()
image_back = Image.open(io.BytesIO(contents__back))
input_to_type_of_filters = image_back
else:
input_to_type_of_filters = type_of_filters
contents_img = await image_file.read()
image = Image.open(io.BytesIO(contents_img))
produced_image=SegmenterBackground().Back_step1(image,input_to_type_of_filters,int(blur_radius))[0]#---->
# Save the processed image to a temporary file
output_file_path_tmp = "/tmp/tmp_processed_image.png"
produced_image.save(output_file_path_tmp)
# Return the processed image for download
return FileResponse(output_file_path_tmp, media_type='image/png', filename="/tmp/tmp_processed_image.png")
@app.post('/imageStep2')
async def image_step2(image_file: UploadFile = File(...),things_replace: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)):
contents = await image_file.read()
image = Image.open(io.BytesIO(contents))
things_replace=ast.literal_eval(things_replace)
produced_image=SegmenterBackground().Back_step2(image,"cam",things_replace,int(blur_radius))
# Save the processed image to a temporary file
output_file_path_tmp = "/tmp/tmp_processed_image.png"
produced_image.save(output_file_path_tmp)
# Return the processed image for download
return FileResponse(output_file_path_tmp, media_type='image/png', filename="/tmp/tmp_processed_image.png")
@app.post('/Video')
async def Video(video_file: UploadFile = File(...),kind_back: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)):
#video_data = await video_file.read()
#nparr = np.frombuffer(video_data, np.uint8)
#video_path=cv2.imdecode(nparr, cv2.IMREAD_COLOR) #named this as just passed as it's path
video_path = f'/tmp/tmptmp.avi'#{video_file.filename}
with open(video_path, 'wb') as f:
f.write(await video_file.read())
produced_video=SegmenterBackground().Back_video(video_path, '/tmp/29_sep_2.avi','cam',['animal','person'])#video,background_image,what_remove,blur_radius=23)
return StreamingResponse(open('/tmp/29_sep_2.avi', "rb"), media_type="video/avi")