Skip to content

Instantly share code, notes, and snippets.

@harveyslash
Created April 18, 2017 02:38
Show Gist options
  • Save harveyslash/706e94da3cd96a3de2918e301d9ceed7 to your computer and use it in GitHub Desktop.
Save harveyslash/706e94da3cd96a3de2918e301d9ceed7 to your computer and use it in GitHub Desktop.
from __future__ import print_function
import cv2
import json
import numpy as np
import socket
import sys
import pickle
import os
from time import sleep
import struct ### new code
cap=cv2.VideoCapture(0)
cap.set(3,224)
cap.set(4,224)
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('ai.student.rit.edu',8083))
directionBuffer = []
bufferCounter = 0
oldFrame = [0,0]
newFrame = [0,0]
def getAveragePoint(pointArr):
sumX = 0
sumY = 0
for point in pointArr:
sumX += point[0]
sumY += point[1]
X= sumX/len(pointArr)
Y= sumY/len(pointArr)
return [X,Y]
while True:
ret,frame=cap.read()
data = pickle.dumps(frame) ### new code
clientsocket.sendall(struct.pack("Q", len(data))+data) ### new code
sleep(.2)
data = clientsocket.recv(4096*5)
# print(data)
# data= json.loads(data)
os.system('clear')
# regResult = data['None'][-1]
# regResult = [int(i) for i in regResult]
print (data)
points = json.loads(data)['points']
#print(x['points'])
if bufferCounter==2:
bufferCounter = 0
points = getAveragePoint(directionBuffer)
print("averate is")
print(points)
cv2.circle(frame,(points[0],points[1]),25,(0,0,255),-1)
if len(directionBuffer)>3:
directionBuffer.pop(0)
directionBuffer.pop(0)
directionBuffer.pop(0)
directionBuffer.pop(0)
# bufferCounter +=1
# directionBuffer.append(points)
newFrame = points
difference = abs(newFrame[0]-oldFrame[0])
if newFrame[0]>oldFrame[0]and difference>15:
print("moving left")
elif oldFrame[0]>newFrame[0] and difference>15:
print("moving right")
oldFrame=newFrame
cv2.circle(frame,(points[0],points[1]),25,(0,0,255),-1)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('s'):
exit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment