cap = cv2.VideoCapture(0) cap.set(3, 1280) cap.set(4, 720) detector = HandDetector(detectionCon=0.5, maxHands=1) while True: # Get image frame success, img = cap.read() # Find the hand and its landmarks img = detector.findHands(img) lmList, bboxInfo = detector.findPosition(img) if lmList: bbox = bboxInfo['bbox'] # Find how many fingers are up fingers = detector.fingersUp() totalFingers = fingers.count(1) cv2.putText(img, f'Fingers:{totalFingers}', (bbox[0] + 200, bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2) # Find Distance Between Two Fingers distance, img, info = detector.findDistance(8, 12, img) cv2.putText(img, f'Dist:{int(distance)}', (bbox[0] + 400, bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2) # Find Hand Type myHandType = detector.handType() cv2.putText(img, f'Hand:{myHandType}', (bbox[0], bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2) # Display
img = cv2.flip(img, 1) pathFullImage = os.path.join(folderPath, pathImages[imgNumber]) imgCurrent = cv2.imread(pathFullImage) # Find the hand and its landmarks hands, img = detectorHand.findHands(img) # with draw # Draw Gesture Threshold line cv2.line(img, (0, gestureThreshold), (width, gestureThreshold), (0, 255, 0), 10) if hands and buttonPressed is False: # If hand is detected hand = hands[0] cx, cy = hand["center"] lmList = hand["lmList"] # List of 21 Landmark points fingers = detectorHand.fingersUp(hand) # List of which fingers are up # Constrain values for easier drawing xVal = int(np.interp(lmList[8][0], [width // 2, width], [0, width])) yVal = int(np.interp(lmList[8][1], [150, height - 150], [0, height])) indexFinger = xVal, yVal if cy <= gestureThreshold: # If hand is at the height of the face if fingers == [1, 0, 0, 0, 0]: print("Left") buttonPressed = True if imgNumber > 0: imgNumber -= 1 annotations = [[]] annotationNumber = -1 annotationStart = False
cap.set(4, 720) detector = HandDetector(detectionCon=0.7) startDist = None scale = 0 cx, cy = 500,500 while True: success, img = cap.read() hands, img = detector.findHands(img) img1 = cv2.imread("cvarduino.jpg") if len(hands) == 2: # print(detector.fingersUp(hands[0]), detector.fingersUp(hands[1])) if detector.fingersUp(hands[0]) == [1, 1, 0, 0, 0] and \ detector.fingersUp(hands[1]) == [1, 1, 0, 0, 0]: # print("Zoom Gesture") lmList1 = hands[0]["lmList"] lmList2 = hands[1]["lmList"] # point 8 is the tip of the index finger if startDist is None: #length, info, img = detector.findDistance(lmList1[8], lmList2[8], img) length, info, img = detector.findDistance(hands[0]["center"], hands[1]["center"], img) startDist = length #length, info, img = detector.findDistance(lmList1[8], lmList2[8], img) length, info, img = detector.findDistance(hands[0]["center"], hands[1]["center"], img) scale = int((length - startDist) // 2) cx, cy = info[4:] print(scale) else: