mirror of
https://github.com/EyeTrackVR/EyeTrackVR.git
synced 2025-11-04 14:39:42 +08:00
Daddy's output is changed
This commit is contained in:
parent
c91eb003a8
commit
43c216ff1f
@ -265,28 +265,26 @@ class DADDY_cls(object):
|
|||||||
kps = pred.astype(np.int32)
|
kps = pred.astype(np.int32)
|
||||||
|
|
||||||
# eyecenter = kps[:6].mean(axis=0).astype(int)
|
# eyecenter = kps[:6].mean(axis=0).astype(int)
|
||||||
# temp_eyecenter = pred[:6].mean(axis=0)
|
|
||||||
ear = self.beer.ear(pred)
|
ear = self.beer.ear(pred)
|
||||||
# ear=self.ear_oef(ear[np.newaxis])#memo: Parameters need tuning
|
# ear=self.ear_oef(ear[np.newaxis])#memo: Parameters need tuning
|
||||||
|
|
||||||
if save_video or imshow_enable:
|
pupil_center = pred[7:].mean(axis=0)
|
||||||
for i in range(kps.shape[0]):
|
pupil_center_x = int(pupil_center[0])
|
||||||
if i < 6:
|
pupil_center_y = int(pupil_center[1])
|
||||||
color = (0, 0, 255)
|
|
||||||
elif i == 6:
|
for i in range(kps.shape[0]):
|
||||||
color = 128 # (0, 255, 0)
|
if i < 6:
|
||||||
else:
|
color = (0, 0, 255)
|
||||||
color = (255, 0, 0)
|
elif i == 6:
|
||||||
cv2.circle(gray_frame, (kps[i, 0], kps[i, 1]), 1, color, 2)
|
color = 128
|
||||||
cv2.putText(gray_frame, str(i), (kps[i, 0] - 10, kps[i, 1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1)
|
else:
|
||||||
# cv2.circle(gray_frame, (eyecenter.tolist()), 1, (128, 128, 0), 2)
|
color = (255, 0, 0)
|
||||||
# cv2.circle(gray_frame, (iriscenter.tolist()), 1, (0, 128, 128), 2)
|
# todo: We should have a proper variable for drawing.
|
||||||
# cv2.circle(gray_frame,(eyecenter.tolist()),int(self.center_dist_med.median()),(0, 0, 255),1)
|
cv2.circle(self.current_image_gray, (kps[i, 0], kps[i, 1]), 1, color, 2)
|
||||||
# cv2.ellipse(gray_frame, (eyecenter.tolist(), (int(self.iris_med_w.median()*2.5), int(self.iris_med_h.median()*2.5)), np.rad2deg(self.eye_med_rad.median())), (255, 0, 0), thickness=1)
|
# cv2.putText(self.current_image_gray, str(i), (kps[i, 0] - 10, kps[i, 1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1)
|
||||||
cv2.putText(gray_frame, "EAR: "+str(ear), (self.current_image_gray.shape[1]//10, self.current_image_gray.shape[0]//10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (255,0,0), 1)
|
# cv2.putText(self.current_image_gray, "EAR: "+str(ear), (self.current_image_gray.shape[1]//10, self.current_image_gray.shape[0]//10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (255,0,0), 1)
|
||||||
cv2.imshow("gray_frame", gray_frame)
|
|
||||||
if cv2.waitKey(1) & 0xFF == ord("q"):
|
|
||||||
pass
|
|
||||||
# global loopnum
|
# global loopnum
|
||||||
# if loopnum < 1350*2:
|
# if loopnum < 1350*2:
|
||||||
# # self.video.write(cv2.resize(gray_frame.copy(), (200, 150), None))
|
# # self.video.write(cv2.resize(gray_frame.copy(), (200, 150), None))
|
||||||
@ -302,7 +300,8 @@ class DADDY_cls(object):
|
|||||||
# i == [0:6] = Inner and outer corners of eyes and eyelids
|
# i == [0:6] = Inner and outer corners of eyes and eyelids
|
||||||
# i == [6] = pupil
|
# i == [6] = pupil
|
||||||
# i == [7:] = iris
|
# i == [7:] = iris
|
||||||
return ear
|
|
||||||
|
return pupil_center_x, pupil_center_y, ear
|
||||||
|
|
||||||
|
|
||||||
class External_Run_DADDY(object):
|
class External_Run_DADDY(object):
|
||||||
@ -311,8 +310,8 @@ class External_Run_DADDY(object):
|
|||||||
|
|
||||||
def run(self, current_image_gray):
|
def run(self, current_image_gray):
|
||||||
self.algo.current_image_gray = current_image_gray
|
self.algo.current_image_gray = current_image_gray
|
||||||
pupil = self.algo.single_run()
|
pupil_x, pupil_y, ear = self.algo.single_run()
|
||||||
return pupil
|
return pupil_x, pupil_y, ear
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@ -68,6 +68,7 @@ class InformationOrigin(Enum):
|
|||||||
FAILURE = 3
|
FAILURE = 3
|
||||||
HSF = 4
|
HSF = 4
|
||||||
HSRAC = 5
|
HSRAC = 5
|
||||||
|
DADDY = 6
|
||||||
|
|
||||||
bbb = 0
|
bbb = 0
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -153,6 +154,7 @@ class EyeProcessor:
|
|||||||
|
|
||||||
self.er_hsf = None
|
self.er_hsf = None
|
||||||
self.er_hsrac = None
|
self.er_hsrac = None
|
||||||
|
self.er_daddy = None
|
||||||
|
|
||||||
self.ibo = IntensityBasedOpeness(eyeside=EyeLR.LEFT if self.eye_id is EyeId.LEFT else EyeLR.RIGHT if eye_id is EyeId.RIGHT else -1)
|
self.ibo = IntensityBasedOpeness(eyeside=EyeLR.LEFT if self.eye_id is EyeId.LEFT else EyeLR.RIGHT if eye_id is EyeId.RIGHT else -1)
|
||||||
self.roi_include_set = {"rotation_angle", "roi_window_x", "roi_window_y"}
|
self.roi_include_set = {"rotation_angle", "roi_window_x", "roi_window_y"}
|
||||||
@ -175,7 +177,6 @@ class EyeProcessor:
|
|||||||
self.prev_x = None
|
self.prev_x = None
|
||||||
self.prev_y = None
|
self.prev_y = None
|
||||||
|
|
||||||
self.daddy = None
|
|
||||||
self.current_algo = InformationOrigin.HSRAC
|
self.current_algo = InformationOrigin.HSRAC
|
||||||
|
|
||||||
|
|
||||||
@ -278,7 +279,13 @@ class EyeProcessor:
|
|||||||
self.eyeopen = BLINK(self)
|
self.eyeopen = BLINK(self)
|
||||||
|
|
||||||
def DADDYM(self):
|
def DADDYM(self):
|
||||||
landmark = self.daddy.run(self.current_image_gray)
|
# todo: We should have a proper variable for drawing.
|
||||||
|
self.thresh=self.current_image_gray.copy()
|
||||||
|
self.rawx, self.rawy, self.eyeopen = self.er_daddy.run(self.current_image_gray)
|
||||||
|
# Daddy also uses a one euro filter, so I'll have to use it twice, but I'm not going to think too much about it.
|
||||||
|
self.out_x, self.out_y = cal_osc(self, self.rawx, self.rawy)
|
||||||
|
|
||||||
|
self.current_algorithm = InformationOrigin.DADDY
|
||||||
|
|
||||||
def HSRACM(self):
|
def HSRACM(self):
|
||||||
# todo: added process to initialise er_hsrac when resolution changes
|
# todo: added process to initialise er_hsrac when resolution changes
|
||||||
@ -361,11 +368,6 @@ class EyeProcessor:
|
|||||||
algolist = [None, None, None, None, None]
|
algolist = [None, None, None, None, None]
|
||||||
|
|
||||||
#set algo priorities
|
#set algo priorities
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if self.settings.gui_HSF:
|
if self.settings.gui_HSF:
|
||||||
if self.er_hsf is None:
|
if self.er_hsf is None:
|
||||||
self.er_hsf = External_Run_HSF(self.settings.gui_skip_autoradius, self.settings.gui_HSF_radius)
|
self.er_hsf = External_Run_HSF(self.settings.gui_skip_autoradius, self.settings.gui_HSF_radius)
|
||||||
@ -382,16 +384,15 @@ class EyeProcessor:
|
|||||||
if self.er_hsrac is not None:
|
if self.er_hsrac is not None:
|
||||||
self.er_hsrac = None
|
self.er_hsrac = None
|
||||||
|
|
||||||
_, self.firstalgo, self.secondalgo, self.thirdalgo, self.fourthalgo = algolist
|
if self.settings.gui_DADDY:
|
||||||
|
if self.er_daddy is None:
|
||||||
|
self.er_daddy = External_Run_DADDY()
|
||||||
|
algolist[self.settings.gui_DADDYP] = self.DADDYM
|
||||||
|
else:
|
||||||
|
if self.er_daddy is not None:
|
||||||
|
self.er_daddy = None
|
||||||
|
|
||||||
if self.settings.gui_HSF and self.settings.gui_HSFP == 1: #I feel like this is super innefficient though it only runs at startup and no solution is coming to me atm
|
_, self.firstalgo, self.secondalgo, self.thirdalgo, self.fourthalgo = algolist
|
||||||
self.firstalgo = self.HSFM
|
|
||||||
elif self.settings.gui_HSF and self.settings.gui_HSFP == 2:
|
|
||||||
self.secondalgo = self.HSFM
|
|
||||||
elif self.settings.gui_HSF and self.settings.gui_HSFP == 3:
|
|
||||||
self.thirdalgo = self.HSFM
|
|
||||||
elif self.settings.gui_HSF and self.settings.gui_HSFP == 4:
|
|
||||||
self.fourthalgo = self.HSFM
|
|
||||||
|
|
||||||
if self.settings.gui_RANSAC3D and self.settings.gui_RANSAC3DP == 1:
|
if self.settings.gui_RANSAC3D and self.settings.gui_RANSAC3DP == 1:
|
||||||
self.firstalgo = self.RANSAC3DM
|
self.firstalgo = self.RANSAC3DM
|
||||||
@ -402,15 +403,6 @@ class EyeProcessor:
|
|||||||
elif self.settings.gui_RANSAC3D and self.settings.gui_RANSAC3DP == 4:
|
elif self.settings.gui_RANSAC3D and self.settings.gui_RANSAC3DP == 4:
|
||||||
self.fourthalgo = self.RANSAC3DM
|
self.fourthalgo = self.RANSAC3DM
|
||||||
|
|
||||||
if self.settings.gui_HSRAC and self.settings.gui_HSRACP == 1:
|
|
||||||
self.firstalgo = self.HSRACM
|
|
||||||
elif self.settings.gui_HSRAC and self.settings.gui_HSRACP == 2:
|
|
||||||
self.secondalgo = self.HSRACM
|
|
||||||
elif self.settings.gui_HSRAC and self.settings.gui_HSRACP == 3:
|
|
||||||
self.thirdalgo = self.HSRACM
|
|
||||||
elif self.settings.gui_HSRAC and self.settings.gui_HSRACP == 4:
|
|
||||||
self.fourthalgo = self.HSRACM
|
|
||||||
|
|
||||||
if self.settings.gui_BLOB and self.settings.gui_BLOBP == 1:
|
if self.settings.gui_BLOB and self.settings.gui_BLOBP == 1:
|
||||||
self.firstalgo = self.BLOBM
|
self.firstalgo = self.BLOBM
|
||||||
elif self.settings.gui_BLOB and self.settings.gui_BLOBP == 2:
|
elif self.settings.gui_BLOB and self.settings.gui_BLOBP == 2:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user