Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
AmirKaseb authored Aug 25, 2023
1 parent 751ab65 commit 48ebedb
Show file tree
Hide file tree
Showing 4 changed files with 139 additions and 0 deletions.
Binary file added __pycache__/controller.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/controller.cpython-38.pyc
Binary file not shown.
49 changes: 49 additions & 0 deletions controller.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import pyfirmata

comport='COM3'

board=pyfirmata.Arduino(comport)

led_1=board.get_pin('d:13:o')
led_2=board.get_pin('d:12:o')
led_3=board.get_pin('d:11:o')
led_4=board.get_pin('d:10:o')
led_5=board.get_pin('d:9:o')

def led(total):
if total==0:
led_1.write(0)
led_2.write(0)
led_3.write(0)
led_4.write(0)
led_5.write(0)
elif total==1:
led_1.write(1)
led_2.write(0)
led_3.write(0)
led_4.write(0)
led_5.write(0)
elif total==2:
led_1.write(1)
led_2.write(1)
led_3.write(0)
led_4.write(0)
led_5.write(0)
elif total==3:
led_1.write(1)
led_2.write(1)
led_3.write(1)
led_4.write(0)
led_5.write(0)
elif total==4:
led_1.write(1)
led_2.write(1)
led_3.write(1)
led_4.write(1)
led_5.write(0)
elif total==5:
led_1.write(1)
led_2.write(1)
led_3.write(1)
led_4.write(1)
led_5.write(1)
90 changes: 90 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import cv2
import mediapipe as mp
import time
import controller as cnt


time.sleep(2.0)

mp_draw=mp.solutions.drawing_utils
mp_hand=mp.solutions.hands


tipIds=[4,8,12,16,20]

video=cv2.VideoCapture(0)

with mp_hand.Hands(min_detection_confidence=0.5,
min_tracking_confidence=0.5) as hands:
while True:
ret,image=video.read()
image=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image.flags.writeable=False
results=hands.process(image)
image.flags.writeable=True
image=cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
lmList=[]
if results.multi_hand_landmarks:
for hand_landmark in results.multi_hand_landmarks:
myHands=results.multi_hand_landmarks[0]
for id, lm in enumerate(myHands.landmark):
h,w,c=image.shape
cx,cy= int(lm.x*w), int(lm.y*h)
lmList.append([id,cx,cy])
mp_draw.draw_landmarks(image, hand_landmark, mp_hand.HAND_CONNECTIONS)
fingers=[]
if len(lmList)!=0:
if lmList[tipIds[0]][1] > lmList[tipIds[0]-1][1]:
fingers.append(1)
else:
fingers.append(0)
for id in range(1,5):
if lmList[tipIds[id]][2] < lmList[tipIds[id]-2][2]:
fingers.append(1)
else:
fingers.append(0)
total=fingers.count(1)
cnt.led(total)
if total==0:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "0", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
elif total==1:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "1", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
elif total==2:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "2", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
elif total==3:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "3", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
elif total==4:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "4", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
elif total==5:
cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
cv2.putText(image, "5", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 0, 0), 5)
cv2.imshow("Frame",image)
k=cv2.waitKey(1)
if k==ord('q'):
break
video.release()
cv2.destroyAllWindows()

0 comments on commit 48ebedb

Please sign in to comment.