| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import copy
- import cv2
- import numpy as np
- import torch
- from src import util
- from src.body import Body
- from src.hand import Hand
- body_estimation = Body('model/body_pose_model.pth')
- hand_estimation = Hand('model/hand_pose_model.pth')
- print(f"Torch device: {torch.cuda.get_device_name()}")
- cap = cv2.VideoCapture(0)
- print(cap.isOpened())
- cap.set(3, 640)
- cap.set(4, 480)
- while True:
- ret, oriImg = cap.read()
- candidate, subset = body_estimation(oriImg)
- canvas = copy.deepcopy(oriImg)
- canvas = util.draw_bodypose(canvas, candidate, subset)
- # detect hand
- hands_list = util.handDetect(candidate, subset, oriImg)
- all_hand_peaks = []
- for x, y, w, is_left in hands_list:
- peaks = hand_estimation(oriImg[y:y + w, x:x + w, :])
- peaks[:, 0] = np.where(peaks[:, 0] == 0, peaks[:, 0], peaks[:, 0] + x)
- peaks[:, 1] = np.where(peaks[:, 1] == 0, peaks[:, 1], peaks[:, 1] + y)
- all_hand_peaks.append(peaks)
- canvas = util.draw_handpose(canvas, all_hand_peaks)
- cv2.imshow('demo', canvas) # 一个窗口用以显示原视频
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- cap.release()
- cv2.destroyAllWindows()
|