File size: 3,245 Bytes
b1f46e5 5d29343 b1f46e5 4722fbd 29dc177 473fa66 ceb119d b1f46e5 ceb119d b1f46e5 4722fbd 473fa66 6a8b173 473fa66 4722fbd 473fa66 7928acb 4722fbd 7928acb 5e168b6 7928acb 4722fbd 5d29343 7ebdcd1 593ade3 7ebdcd1 5d29343 a809470 5d29343 0c38a00 4722fbd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
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
return background_image
if background_image:
# Process the image if provided
return {"filename": background_image.filename}
else:
# Handle the case where no image is provided
return {"message": "No image provided"}
contents_img = await image_file.read()
image = Image.open(io.BytesIO(contents_img))
produced_image=SegmenterBackground().Back_step1(image,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")
|