Skip to content
Snippets Groups Projects
Commit 11ca37c7 authored by 배찬희's avatar 배찬희
Browse files

commit realTime

parent c993fd12
No related branches found
No related tags found
No related merge requests found
import pyautogui
import time
import actgui
import cv2
import numpy as np
from unified_detector import Fingertips
from hand_detector.detector import SOLO, YOLO
def main():
hand_detection_method = 'yolo'
if hand_detection_method is 'solo':
hand = SOLO(weights='weights/solo.h5', threshold=0.8)
elif hand_detection_method is 'yolo':
hand = YOLO(weights='weights/yolo.h5', threshold=0.8)
else:
assert False, "'" + hand_detection_method + \
"' hand detection does not exist. use either 'solo' or 'yolo' as hand detection method"
fingertips = Fingertips(weights='weights/fingertip.h5')
cam = cv2.VideoCapture(0)
print('Unified Gesture & Fingertips Detection')
while True:
time.sleep(0.2)
ret, image = cam.read()
################################################
# openCV CAM flip
################################################
image = cv2.flip(image,1)
################################################
if ret is False:
break
# hand detection
tl, br = hand.detect(image=image)
if tl and br is not None:
cropped_image = image[tl[1]:br[1], tl[0]: br[0]]
height, width, _ = cropped_image.shape
# gesture classification and fingertips regression
prob, pos = fingertips.classify(image=cropped_image)
pos = np.mean(pos, 0)
# post-processing
prob = np.asarray([(p >= 0.2) * 1.0 for p in prob])
for i in range(0, len(pos), 2):
pos[i] = pos[i] * width + tl[0]
pos[i + 1] = pos[i + 1] * height + tl[1]
#########################################################
# start gui
#########################################################
# hand check
case = actgui.hand_check(prob)
print(case)
actgui.store_pos(pos)
# 좌표 초기화
actgui.initialize_coordinate()
# 변수 초기화
actgui.initialize_variable()
# 종료 확인
bool = actgui.terminate_check()
if bool: break
##########################
# 작동
actgui.act_gui()
#########################################################
# end gui
#########################################################
# drawing
index = 0
color = [(15, 15, 240), (15, 240, 155), (240, 155, 15), (240, 15, 155), (240, 15, 240)]
# 손 범위
image = cv2.rectangle(image, (tl[0], tl[1]), (br[0], br[1]), (235, 26, 158), 2)
# 원 그리기
for c, p in enumerate(prob):
if p > 0.5:
image = cv2.circle(image, (int(pos[index]), int(pos[index + 1])), radius=12,
color=color[c], thickness=-2)
index = index + 2
if cv2.waitKey(1) & 0xff == 27:
break
# display image
image = cv2.resize(image, dsize=(0, 0), fx=0.3, fy=0.3, interpolation=cv2.INTER_AREA)
cv2.imshow('Unified Gesture & Fingertips Detection', image)
cam.release()
cv2.destroyAllWindows()
def mainleft():
hand_detection_method = 'yolo'
if hand_detection_method is 'solo':
hand = SOLO(weights='weights/solo.h5', threshold=0.8)
elif hand_detection_method is 'yolo':
hand = YOLO(weights='weights/yolo.h5', threshold=0.8)
else:
assert False, "'" + hand_detection_method + \
"' hand detection does not exist. use either 'solo' or 'yolo' as hand detection method"
fingertips = Fingertips(weights='weights/fingertip.h5')
cam = cv2.VideoCapture(0)
print('Unified Gesture & Fingertips Detection')
while True:
time.sleep(0.2)
ret, image = cam.read()
################################################
################################################
if ret is False:
break
# hand detection
tl, br = hand.detect(image=image)
if tl and br is not None:
cropped_image = image[tl[1]:br[1], tl[0]: br[0]]
height, width, _ = cropped_image.shape
# gesture classification and fingertips regression
prob, pos = fingertips.classify(image=cropped_image)
pos = np.mean(pos, 0)
# post-processing
prob = np.asarray([(p >= 0.2) * 1.0 for p in prob])
for i in range(0, len(pos), 2):
pos[i] = pos[i] * width + tl[0]
pos[i + 1] = pos[i + 1] * height + tl[1]
#########################################################
# start gui
#########################################################
# hand check
case = actgui.hand_check(prob)
print(case)
actgui.store_pos(pos)
# 좌표 초기화
actgui.initialize_coordinate()
# 변수 초기화
actgui.initialize_variable()
# 종료 확인
bool = actgui.terminate_check()
if bool: break
##########################
# 작동
actgui.act_gui()
#########################################################
# end gui
#########################################################
# drawing
index = 0
color = [(15, 15, 240), (15, 240, 155), (240, 155, 15), (240, 15, 155), (240, 15, 240)]
# 손 범위
image = cv2.rectangle(image, (tl[0], tl[1]), (br[0], br[1]), (235, 26, 158), 2)
# 원 그리기
for c, p in enumerate(prob):
if p > 0.5:
image = cv2.circle(image, (int(pos[index]), int(pos[index + 1])), radius=12,
color=color[c], thickness=-2)
index = index + 2
if cv2.waitKey(1) & 0xff == 27:
break
# display image
image = cv2.resize(image, dsize=(0, 0), fx=0.3, fy=0.3, interpolation=cv2.INTER_AREA)
cv2.imshow('Unified Gesture & Fingertips Detection', image)
cam.release()
cv2.destroyAllWindows()
if __name__=="__main__":
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment