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