└── Media Pipe Holistic Tutorial.ipynb /Media Pipe Holistic Tutorial.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 0. Install and Import Dependencies" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "!pip install mediapipe opencv-python" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": null, 22 | "metadata": {}, 23 | "outputs": [], 24 | "source": [ 25 | "import mediapipe as mp\n", 26 | "import cv2" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": null, 32 | "metadata": {}, 33 | "outputs": [], 34 | "source": [ 35 | "mp_drawing = mp.solutions.drawing_utils\n", 36 | "mp_holistic = mp.solutions.holistic" 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "metadata": {}, 42 | "source": [ 43 | "# 1. Get Realtime Webcam Feed" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": null, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "cap = cv2.VideoCapture(0)\n", 53 | "while cap.isOpened():\n", 54 | " ret, frame = cap.read()\n", 55 | " cv2.imshow('Raw Webcam Feed', frame)\n", 56 | " \n", 57 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 58 | " break\n", 59 | "\n", 60 | "cap.release()\n", 61 | "cv2.destroyAllWindows()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [ 70 | "cap.release()\n", 71 | "cv2.destroyAllWindows()" 72 | ] 73 | }, 74 | { 75 | "cell_type": "markdown", 76 | "metadata": {}, 77 | "source": [ 78 | "# 2. Make Detections from Feed\n", 79 | "1. Detect Facial Landmarks \n", 80 | "2. Detect Hand Poses\n", 81 | "3. Detect Body Poses" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": null, 87 | "metadata": {}, 88 | "outputs": [], 89 | "source": [ 90 | "cap = cv2.VideoCapture(0)\n", 91 | "# Initiate holistic model\n", 92 | "with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:\n", 93 | " \n", 94 | " while cap.isOpened():\n", 95 | " ret, frame = cap.read()\n", 96 | " \n", 97 | " # Recolor Feed\n", 98 | " image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n", 99 | " # Make Detections\n", 100 | " results = holistic.process(image)\n", 101 | " # print(results.face_landmarks)\n", 102 | " \n", 103 | " # face_landmarks, pose_landmarks, left_hand_landmarks, right_hand_landmarks\n", 104 | " \n", 105 | " # Recolor image back to BGR for rendering\n", 106 | " image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)\n", 107 | " \n", 108 | " # Draw face landmarks\n", 109 | " mp_drawing.draw_landmarks(image, results.face_landmarks, mp_holistic.FACE_CONNECTIONS)\n", 110 | " \n", 111 | " # Right hand\n", 112 | " mp_drawing.draw_landmarks(image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS)\n", 113 | "\n", 114 | " # Left Hand\n", 115 | " mp_drawing.draw_landmarks(image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS)\n", 116 | "\n", 117 | " # Pose Detections\n", 118 | " mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS)\n", 119 | " \n", 120 | " cv2.imshow('Raw Webcam Feed', image)\n", 121 | "\n", 122 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 123 | " break\n", 124 | "\n", 125 | "cap.release()\n", 126 | "cv2.destroyAllWindows()" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": null, 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": [ 135 | "mp_holistic.POSE_CONNECTIONS" 136 | ] 137 | }, 138 | { 139 | "cell_type": "markdown", 140 | "metadata": {}, 141 | "source": [ 142 | "# 3. Apply Styling" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": null, 148 | "metadata": {}, 149 | "outputs": [], 150 | "source": [ 151 | "mp_drawing.DrawingSpec(color=(0,0,255), thickness=2, circle_radius=2)" 152 | ] 153 | }, 154 | { 155 | "cell_type": "code", 156 | "execution_count": null, 157 | "metadata": {}, 158 | "outputs": [], 159 | "source": [ 160 | "mp_drawing.draw_landmarks??" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": null, 166 | "metadata": {}, 167 | "outputs": [], 168 | "source": [ 169 | "cap = cv2.VideoCapture(0)\n", 170 | "# Initiate holistic model\n", 171 | "with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:\n", 172 | " \n", 173 | " while cap.isOpened():\n", 174 | " ret, frame = cap.read()\n", 175 | " \n", 176 | " # Recolor Feed\n", 177 | " image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n", 178 | " # Make Detections\n", 179 | " results = holistic.process(image)\n", 180 | " # print(results.face_landmarks)\n", 181 | " \n", 182 | " # face_landmarks, pose_landmarks, left_hand_landmarks, right_hand_landmarks\n", 183 | " \n", 184 | " # Recolor image back to BGR for rendering\n", 185 | " image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)\n", 186 | " \n", 187 | " # 1. Draw face landmarks\n", 188 | " mp_drawing.draw_landmarks(image, results.face_landmarks, mp_holistic.FACE_CONNECTIONS, \n", 189 | " mp_drawing.DrawingSpec(color=(80,110,10), thickness=1, circle_radius=1),\n", 190 | " mp_drawing.DrawingSpec(color=(80,256,121), thickness=1, circle_radius=1)\n", 191 | " )\n", 192 | " \n", 193 | " # 2. Right hand\n", 194 | " mp_drawing.draw_landmarks(image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 195 | " mp_drawing.DrawingSpec(color=(80,22,10), thickness=2, circle_radius=4),\n", 196 | " mp_drawing.DrawingSpec(color=(80,44,121), thickness=2, circle_radius=2)\n", 197 | " )\n", 198 | "\n", 199 | " # 3. Left Hand\n", 200 | " mp_drawing.draw_landmarks(image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 201 | " mp_drawing.DrawingSpec(color=(121,22,76), thickness=2, circle_radius=4),\n", 202 | " mp_drawing.DrawingSpec(color=(121,44,250), thickness=2, circle_radius=2)\n", 203 | " )\n", 204 | "\n", 205 | " # 4. Pose Detections\n", 206 | " mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS, \n", 207 | " mp_drawing.DrawingSpec(color=(245,117,66), thickness=2, circle_radius=4),\n", 208 | " mp_drawing.DrawingSpec(color=(245,66,230), thickness=2, circle_radius=2)\n", 209 | " )\n", 210 | " \n", 211 | " cv2.imshow('Raw Webcam Feed', image)\n", 212 | "\n", 213 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 214 | " break\n", 215 | "\n", 216 | "cap.release()\n", 217 | "cv2.destroyAllWindows()" 218 | ] 219 | } 220 | ], 221 | "metadata": { 222 | "kernelspec": { 223 | "display_name": "Python 3", 224 | "language": "python", 225 | "name": "python3" 226 | }, 227 | "language_info": { 228 | "codemirror_mode": { 229 | "name": "ipython", 230 | "version": 3 231 | }, 232 | "file_extension": ".py", 233 | "mimetype": "text/x-python", 234 | "name": "python", 235 | "nbconvert_exporter": "python", 236 | "pygments_lexer": "ipython3", 237 | "version": "3.7.3" 238 | } 239 | }, 240 | "nbformat": 4, 241 | "nbformat_minor": 2 242 | } 243 | --------------------------------------------------------------------------------