File size: 5,025 Bytes
b1f46e5 5d29343 b1f46e5 4722fbd 29dc177 473fa66 4b22123 ceb119d b1f46e5 ceb119d 1976616 b1f46e5 7c14c4a 4722fbd 1373e60 9669421 b012c7d c526434 4b98217 c526434 473fa66 c526434 473fa66 4722fbd 473fa66 4b22123 1976616 4722fbd 4b22123 1976616 3fca0b4 4b22123 3fca0b4 4b22123 1976616 4b22123 3fca0b4 1976616 7928acb 8791de8 1373e60 b012c7d 7928acb 8791de8 7928acb 9beab52 8791de8 9beab52 8791de8 7928acb 4722fbd 9beab52 5d29343 9beab52 7ebdcd1 9beab52 7ebdcd1 9beab52 7ebdcd1 5d29343 7c14c4a 9beab52 5d29343 9beab52 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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
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
import base64
#http://localhost:8000
app = FastAPI()
# Root route
@app.get('/')
def main():
return "Hello From Background remover !"
@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(...)):
#return {"type ":type_of_filters ,"radius":blur_radius,"image":image_file,"back":background_image}
#type_of_filters : cam / ...remove / ...back
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))
output_step1=SegmenterBackground().Back_step1(image,input_to_type_of_filters,int(blur_radius))
produced_image=output_step1[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 FileResponse(output_file_path_tmp, media_type='image/png', filename="/tmp/tmp_processed_image.png")
'''
# Convert the image to base64 to return it in the response
buffered = io.BytesIO()
produced_image.save(buffered, format="PNG")
encoded_img = base64.b64encode(buffered.getvalue()).decode("utf-8")
# Returning both text and the base64 image
return {
"message": output_step1[1],
"image_base64": encoded_img
}
@app.post('/imageStep2')
async def image_step2(image_file: UploadFile = File(...),background_image: Optional [UploadFile] = File(None),type_of_filters: str = Form(...),
things_replace: str = Form(...), blur_radius: str = Form(...)):
#things_replace : from what detected.
things_replace=ast.literal_eval(things_replace)
blur_radius=int(blur_radius)
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 = await image_file.read()
image = Image.open(io.BytesIO(contents))
produced_image=SegmenterBackground().Back_step2(image,input_to_type_of_filters,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(...),background_image: Optional [UploadFile] = File(None),kind_back: str = Form(...)
,type_of_filters: 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
blur_radius=int(blur_radius)
kind_back=ast.literal_eval(kind_back)
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
input_path_toWrite = f'/tmp/tmp_imput.avi'#{video_file.filename}
output_path = '/tmp/tmp_output.avi'
with open(input_path_toWrite, 'wb') as f:
f.write(await video_file.read())
#--------> mp4? (when tried ,worked on it although) sound??
SegmenterBackground().Back_video(input_path_toWrite, output_path,input_to_type_of_filters,kind_back,blur_radius)#video,background_image,what_remove,blur_radius=23)
return StreamingResponse(open(output_path, "rb"), media_type="video/avi")
|