File size: 2,083 Bytes
a7a04f0
 
 
 
2874322
a7a04f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4a3e90
 
 
 
 
a7a04f0
b4a3e90
a7a04f0
 
 
 
 
 
 
73cfc8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a7a04f0
 
 
73cfc8e
 
 
 
 
 
 
 
 
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
import os
import cv2
import uuid

import gradio as gr
import numpy as np

import neovision

MARKDOWN = """
# neovision 💬 + 📸

This is a demo of neovision, a tool that allows you to chat with your webcamusinf GTP Vision. 
"""

connector = neovision.OpanAIConnector()


def save_image_to_drive(image: np.ndarray) -> str:
    image_filename = f"{uuid.uuid4()}.jpeg"
    image_directory = "data"
    os.makedirs(image_directory, exist_ok=True)
    image_path = os.path.join(image_directory, image_filename)
    cv2.imwrite(image_path, image)
    return image_path



def respond(image: np.ndarray, prompt: str, chat_history=None):
    # Initialize chat_history as an empty list if it's None
    if chat_history is None:
        chat_history = []

    image = np.fliplr(image)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image_path = save_image_to_drive(image)
    response = connector.simple_prompt(image=image, prompt=prompt)
    chat_history.append(((image_path,), None))
    chat_history.append((prompt, response))
    return "", chat_history


# with gr.Blocks() as demo:
#     gr.Markdown(MARKDOWN)
#     with gr.Row():
#         webcam = gr.Image(sources=["webcam"], streaming=True, type="numpy")
#         message = gr.Textbox()
#         chatbot = gr.Chatbot()
#         clear_button = gr.Button("Clear")
#         submit_button = gr.Button("Submit")

#     submit_button.click(
#         fn=respond,
#         inputs=[webcam, message],
#         outputs=[chatbot]
#     )

#     clear_button.click(
#         fn=lambda: ("", []),
#         inputs=[],
#         outputs=[message, chatbot]
#     )

# demo.launch(debug=True, show_error=True)

with gr.Blocks() as demo:
    gr.Markdown(MARKDOWN)
    with gr.Row():
        webcam = gr.Image(sources=["webcam"], streaming=True)
        with gr.Column():
            chatbot = gr.Chatbot(height=500)
            message = gr.Textbox()
            clear_button = gr.ClearButton([message, chatbot])

    message.submit(respond, [webcam, message, chatbot], [message, chatbot])

demo.launch(debug=False, show_error=True)