Spaces:
Runtime error
Runtime error
import cv2 | |
import gradio as gr | |
import mediapipe as mp | |
mp_drawing = mp.solutions.drawing_utils | |
mp_drawing_styles = mp.solutions.drawing_styles | |
mp_hands = mp.solutions.hands | |
# For static images: | |
def fun(img): | |
print(type(img)) | |
with mp_hands.Hands(static_image_mode=True,max_num_hands=2,min_detection_confidence=0.5) as hands: | |
#for idx, file in enumerate(IMAGE_FILES): | |
# Read an image, flip it around y-axis for correct handedness output (see | |
# above). | |
#cv2.imwrite('img.png',img[:,:,::-1]) | |
#image = cv2.flip(cv2.imread('./img.png'), 1) | |
image = cv2.flip(img[:,:,::-1], 1) | |
# Convert the BGR image to RGB before processing. | |
results = hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) | |
print(type(results.multi_handedness)) | |
if results.multi_handedness == None: | |
return(cv2.imread('nohands.png')) | |
# Print handedness and draw hand landmarks on the image. | |
print('Handedness:', results.multi_handedness) | |
#if not results.multi_hand_landmarks: | |
# continue | |
image_height, image_width, _ = image.shape | |
annotated_image = image.copy() | |
for hand_landmarks in results.multi_hand_landmarks: | |
print('hand_landmarks:', hand_landmarks) | |
print( | |
f'Index finger tip coordinates: (', | |
f'{hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP].x * image_width}, ' | |
f'{hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP].y * image_height})' | |
) | |
mp_drawing.draw_landmarks( | |
annotated_image, | |
hand_landmarks, | |
mp_hands.HAND_CONNECTIONS, | |
mp_drawing_styles.get_default_hand_landmarks_style(), | |
mp_drawing_styles.get_default_hand_connections_style()) | |
res = cv2.flip(annotated_image, 1) | |
#cv2.imwrite('res.png',res[:,:,::-1]) | |
print(res.shape) | |
return res[:,:,::-1] | |
image = gr.inputs.Image(source='webcam') | |
keypoint = gr.outputs.Image() | |
examples = ['ex1.jpg'] | |
intf = gr.Interface(fn=fun, inputs=image, outputs=keypoint,examples=examples) | |
intf.launch(inline=False,debug=True) |