Files
pytry/right_left_gesture.py
T
2014-02-05 10:44:04 +05:30

76 lines
2.4 KiB
Python

import SimpleCV as s
import time
import simulate_keypress as press
c=s.JpegStreamCamera(r"192.168.173.147:8080/videofeed")
#c=s.Camera()
c1=time.clock()
gesture_time=60
detection_sleep=False
blobs=[None]*gesture_time
#d=s.Display()
i1=c.getImage()
img_width_ori=i1.width
img_height=i1.height
i1=i1.crop(0,0,img_width_ori,img_height/2).flipHorizontal()
img_width=img_width_ori
count=0
while True:
i2=c.getImage().crop(0,0,img_width_ori,img_height/2).flipHorizontal()
i3=(i2-i1)+(i1-i2)
i1=i2
i3=i3.stretch(10,255).erode(2).dilate(2)
f=i3.findBlobs(minsize=100)
blobs[count]=f
min_x_list=[]
#min_y_list=[]
max_x_list=[]
#max_y_list=[]
blobs_empty=True
count_blobs=0
for blobs_temp in blobs:
count_blobs+=1
if blobs_temp:
min_x_list.append([min(temp[0] for temp in blobs_temp.topLeftCorners()),count_blobs])
#min_y_list.append([min(temp[1] for temp in blobs_temp.topLeftCorners()),count_blobs])
max_x_list.append([max(temp[0] for temp in blobs_temp.bottomRightCorners()),count_blobs])
#max_y_list.append([min(temp[1] for temp in blobs_temp.bottomRightCorners()),count_blobs])
blobs_empty=False
if not blobs_empty:
min_x=min([temp[0] for temp in min_x_list])
left_step=min_x_list[[temp[0] for temp in min_x_list].index(min_x)][1]
#min_y=min([temp[0] for temp in min_y_list])
max_x=max([temp[0] for temp in max_x_list])
right_step=max_x_list[[temp[0] for temp in max_x_list].index(max_x)][1]
#max_y=max([temp[0] for temp in max_y_list])
detection_width=abs(max_x-min_x)
if not detection_sleep and detection_width> img_width*0.75:
print("Detected")
print(right_step,left_step)
if right_step>left_step:
print("Left to right")
press.press_up()
else:
print("Right to left")
press.press_down()
print(c1)
detection_sleep=gesture_time
else:
pass
#print("Not detected")
else:
min_x=None
min_y=None
max_x=None
max_y=None
if detection_sleep:
detection_sleep-=1
if f:
f.draw(width=2)
#i3.show()
c2=time.clock()
#print(1/(c1-c2))
c1=c2
count+=1
count=count%gesture_time
## i2.findSkintoneBlobs().show()