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")