File size: 2,332 Bytes
715530d
9d46885
1740d75
9d46885
d4fdd31
 
 
 
 
1740d75
 
 
 
f0fb3a4
1740d75
 
d4fdd31
 
 
1740d75
d4fdd31
 
 
 
 
 
 
 
 
 
 
1740d75
 
d4fdd31
 
 
 
 
1740d75
 
 
 
 
 
d4fdd31
 
 
1740d75
 
d4fdd31
1740d75
d4fdd31
 
1740d75
d4fdd31
715530d
6aedf14
7408480
1740d75
7408480
 
 
 
 
 
 
 
1740d75
 
 
6aedf14
715530d
2c378e7
d4fdd31
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
import gradio as gr
import cv2
from gradio_webrtc import WebRTC
import os
# import mediapipe as mp
# from mediapipe.tasks import python
# from mediapipe.tasks.python import vision, BaseOptions
# from mediapipe import solutions
# from mediapipe.framework.formats import landmark_pb2
import numpy as np
import cv2
from PIL import Image

MODEL_PATH = r"pose_landmarker_lite.task"

# Drawing landmarks
# def draw_landmarks_on_image(rgb_image, detection_result):
#     pose_landmarks_list = detection_result.pose_landmarks
#     annotated_image = np.copy(rgb_image)

#     for pose_landmarks in pose_landmarks_list:
#         pose_landmarks_proto = landmark_pb2.NormalizedLandmarkList()
#         pose_landmarks_proto.landmark.extend([
#             landmark_pb2.NormalizedLandmark(x=landmark.x, y=landmark.y, z=landmark.z) for landmark in pose_landmarks
#         ])
#         solutions.drawing_utils.draw_landmarks(
#             annotated_image,
#             pose_landmarks_proto,
#             solutions.pose.POSE_CONNECTIONS,
#             solutions.drawing_styles.get_default_pose_landmarks_style())
#     return annotated_image


# base_options = python.BaseOptions(delegate=0,model_asset_path=MODEL_PATH)
# options = vision.PoseLandmarkerOptions(
#     base_options=base_options,
#     output_segmentation_masks=True)
# detector = vision.PoseLandmarker.create_from_options(options)



def detection(image, conf_threshold=0.3):
    frame = cv2.flip(image, 1)
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    rgb_frame=cv2.circle(rgb_frame,(90,90),(255,0,0),20)
    # mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=rgb_frame)

    # # Pose detection
    # detection_result = detector.detect(mp_image)

    #     # Draw landmarks
    # annotated_image = draw_landmarks_on_image(mp_image.numpy_view(), detection_result)

    return rgb_frame


with gr.Blocks() as demo:
    image = WebRTC(label="Stream", mode="send-receive", modality="video", height=480, width=640, mirror_webcam=True)
    conf_threshold = gr.Slider(
        label="Confidence Threshold",
        minimum=0.0,
        maximum=1.0,
        step=0.05,
        value=0.30,
    )
    image.stream(
        fn=detection,
        inputs=[image, conf_threshold],
        outputs=[image]
    )

if __name__ == "__app__":
    demo.launch(share=True)