के साथ ट्रैक आई पिल की स्थिति मैं एक रोबोट बनाने की कोशिश कर रहा हूं जिसे मैं मूल आंखों के आंदोलनों के साथ नियंत्रित कर सकता हूं। मैं अपने चेहरे पर एक वेबकैम इंगित कर रहा हूं, और मेरे छात्र की स्थिति के आधार पर, रोबोट एक निश्चित तरीके से आगे बढ़ेगा। यदि छात्र शीर्ष, निचले, बाएं कोने में है, तो आंख के दाहिने कोने में रोबोट क्रमशः आगे, पीछे, बाएं, दाएं स्थानांतरित होगा।वेबकैम, ओपनसीवी, और पायथन
मेरी मूल योजना मेरी बाएं आंख को खोजने के लिए एक आंखों के हार्केड का उपयोग करना था। फिर मैं छात्र के केंद्र को खोजने के लिए आंख क्षेत्र पर हौसीक्रिकल का उपयोग करूंगा। मैं यह निर्धारित करता हूं कि आम आंख क्षेत्र की सीमाओं तक हौसीक्रिकल के केंद्र से दूरी ढूंढकर छात्र कहाँ आंखों में थे।
तो मेरे कोड के पहले भाग के लिए, मैं इस वीडियो में देखी गई आंखों के छात्र के केंद्र को ट्रैक करने में सक्षम होने की उम्मीद कर रहा हूं। https://youtu.be/aGmGyFLQAFM?t=38
लेकिन जब मैं अपना कोड चलाता हूं, तो यह लगातार छात्र का केंद्र नहीं ढूंढ सकता है। गड़बड़ी अक्सर गलत क्षेत्र में खींची जाती है। आंख चलने पर भी, मैं अपने कार्यक्रम को छात्र के केंद्र को लगातार कैसे ढूंढ सकता हूं?
क्या यह मेरे कार्यक्रम को बताने के लिए संभव/बेहतर/आसान है जहां छात्र शुरुआत में है? मैंने कुछ अन्य आंख ट्रैकिंग विधियों को देखा है, लेकिन मैं एक सामान्य एल्गोरिदम नहीं बना सकता। अगर कोई एक फॉर्म बनाने में मदद कर सकता है, तो इसकी बहुत सराहना की जाएगी! https://arxiv.org/ftp/arxiv/papers/1202/1202.6517.pdf
import numpy as np
import cv2
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_righteye_2splits.xml')
#number signifies camera
cap = cv2.VideoCapture(0)
while 1:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#faces = face_cascade.detectMultiScale(gray, 1.3, 5)
eyes = eye_cascade.detectMultiScale(gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(img,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
roi_gray2 = gray[ey:ey+eh, ex:ex+ew]
roi_color2 = img[ey:ey+eh, ex:ex+ew]
circles = cv2.HoughCircles(roi_gray2,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
try:
for i in circles[0,:]:
# draw the outer circle
cv2.circle(roi_color2,(i[0],i[1]),i[2],(255,255,255),2)
print("drawing circle")
# draw the center of the circle
cv2.circle(roi_color2,(i[0],i[1]),2,(255,255,255),3)
except Exception as e:
print e
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()