File size: 1,966 Bytes
0ac8362 0325cdc 94546d9 79ac659 a07c857 0ac8362 94546d9 0ac8362 94546d9 5b6aa72 a01685d 94546d9 a01685d 94546d9 a01685d 0ac8362 94546d9 0325cdc |
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 |
import logging
import cv2
import numpy as np
import streamlit as st
from streamlit_webrtc import WebRtcMode, webrtc_streamer
from cvzone.HandTrackingModule import HandDetector
from sample_utils.turn import get_ice_servers
import av
logger = logging.getLogger(__name__)
st.title("Interactive Virtual Keyboard with Twilio Integration")
st.info("Use your webcam to interact with the virtual keyboard via hand gestures.")
detector = HandDetector(maxHands=1, detectionCon=0.8)
segmentor = SelfiSegmentation()
keys = [["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
["A", "S", "D", "F", "G", "H", "J", "K", "L", ";"],
["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]]
listImg = os.listdir('model/street')
imgList = [cv2.imread(f'model/street/{imgPath}') for imgPath in listImg]
indexImg = 0
# Shared state for output text
if "output_text" not in st.session_state:
st.session_state["output_text"] = ""
# Create a thread-safe queue for passing results from callback
result_queue = queue.Queue()
# Function to process video frame callback
# Corrected function for video frame callback
#####FromHERE CHANGE
# Function to process video frame callback
# Function to process video frame callback
def video_frame_callback(frame):
# Process the frame asynchronously
output_text = process_video_frame(frame, detector, segmentor, imgList, indexImg, keys, st.session_state)
# Put the processed output text into the queue
result_queue.put(output_text)
return frame # Return the processed frame for
webrtc_ctx = webrtc_streamer(
key="keyboard-demo",
mode=WebRtcMode.SENDRECV,
rtc_configuration={"iceServers": get_ice_servers()},
video_frame_callback=video_frame_callback,
media_stream_constraints={"video": True, "audio": False},
)
st.markdown("### Instructions")
st.write(
"""
1. Turn on your webcam using the checkbox above.
2. Use hand gestures to interact with the virtual keyboard.
"""
)
|