File size: 2,355 Bytes
34492bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr 
from src.rep_api import sam_segment,replicate_zest
from src.utils import open_image_from_url,image_to_base64,cut_alpha_from_image
from src.utils import convert_to_pil

def sam_zest(image,prompt,negative_prompt,material_img):
    outputs=sam_segment(image,prompt,negative_prompt)
    mask = open_image_from_url(outputs["inverted_mask"])
    mask_ = mask.convert("L").point(lambda x: 255 - x)
    img=image.copy()
    img=convert_to_pil(img)
    img.putalpha(mask_)
    output=replicate_zest(cut_alpha_from_image(img),material_img=material_img)
    zest_img=open_image_from_url(output)
    zest_img=zest_img.resize((img.size))
    zest_img.putalpha(mask_)
    image.paste(zest_img,(0,0),mask_)
    return image 

def sam_zest_tab():
    with gr.TabItem("Zest Segment",id="zest_seg"):
        with gr.Row():
            with gr.Column():
                image=gr.Image(label="Base Image")
                seg_prompt=gr.Textbox(label="Segment area")
                seg_negative=gr.Textbox(label="Dont seg area")

                zest_image=gr.Image(label="Zest image")
                zest_examples= gr.Examples(
                        examples=[
                            "https://replicate.delivery/pbxt/Kl23gJODaW7EuxrDzBG9dcgqRdMaYSWmBQ9UexnwPiL7AnIr/3.jpg",
                            "https://replicate.delivery/pbxt/Kl2WefehduxwWcQc5OrrBH6AkojQ6OqyQSKBvBLrroSpEBim/f2f0488a-180e-4d7e-9907-f26f92ac5f16.jpg",
                            "https://replicate.delivery/pbxt/Kl2VlUibviSP8Kq5ULLJmMOWorog1YFu0zTreqhqX97c62ku/572a1fc9-a114-4d5b-8c7c-85aa5648c7b4.jpg",
                            "https://replicate.delivery/pbxt/Kl2VCw1UVIJsYw9r8iqSYUMm65ePJhfYOLNolOE8CwxfRjX2/28481ff0-0829-42af-a658-fb96be2abb3d.jpg",
                             "Test_images/pattern_1.png",
                            "Test_images/pattern_2.jpg",
                            "Test_images/pattern_3.jpg",
                            "Test_images/pattern_4.jpg"],

                        inputs=[zest_image])
            with gr.Column():
                gen_zest=gr.Button("Add ZEST")
                output_img=gr.Image(label="output")
            
            gen_zest.click(sam_zest,inputs=[image,seg_prompt,seg_negative,zest_image],outputs=[output_img])
    return image,output_img