diff --git a/EyeTrackApp/AHSF.py b/EyeTrackApp/AHSF.py index febf340..4966e2e 100644 --- a/EyeTrackApp/AHSF.py +++ b/EyeTrackApp/AHSF.py @@ -422,7 +422,6 @@ def get_empty_array( # memo: Unelegant code # memo: transposed version - wh_in_arr = ( np.hstack( [ @@ -715,6 +714,7 @@ def fine_detection(img_gray, pupil_rect_coarse): except: pass + def detect_edges(img_pupil_blur): tau1 = 1 - 20.0 / img_pupil_blur.shape[1] edges = cv2.Canny(img_pupil_blur, 64, 128) @@ -981,8 +981,15 @@ def External_Run_AHSF(frame_gray): right_padding = new_image_size - frame_gray.shape[1] - left_padding # Add padding to the image - frame_gray = cv2.copyMakeBorder(frame_gray, top_padding, bottom_padding, left_padding, right_padding, - cv2.BORDER_CONSTANT, value=average_color) + frame_gray = cv2.copyMakeBorder( + frame_gray, + top_padding, + bottom_padding, + left_padding, + right_padding, + cv2.BORDER_CONSTANT, + value=average_color, + ) frame_clear_resize = frame_gray.copy() # while True: @@ -998,8 +1005,6 @@ def External_Run_AHSF(frame_gray): # frame_gray = cv2.resize(frame_gray, (100, 100)) - - wmax = min( (frame_gray.shape[1] * 0.3), 240 ) # likes to crash, might need more tuning still @@ -1019,19 +1024,21 @@ def External_Run_AHSF(frame_gray): "init_rect_flag": False, "init_rect": (0, 0, frame_gray.shape[1], frame_gray.shape[0]), } - ( - pupil_rect_coarse, - outer_rect_coarse, - max_response_coarse, - mu_inner, - mu_outer, - ) = coarse_detection(frame_gray, params) - ellipse_rect, center_fitting = fine_detection(frame_gray, pupil_rect_coarse) + try: + ( + pupil_rect_coarse, + outer_rect_coarse, + max_response_coarse, + mu_inner, + mu_outer, + ) = coarse_detection(frame_gray, params) + ellipse_rect, center_fitting = fine_detection(frame_gray, pupil_rect_coarse) + except TypeError: + print("[WARN] AHSF NoneType Error") # print(ellipse_rect) - # Pupil_rect, Outer_rect, max_response, mu_inner, mu_outer = coarse_detection(frame_gray, params) + # Pupil_rect, Outer_rect, max_response, mu_inner, mu_outer = coarse_detection(frame_gray, params) image_brg = frame_gray # cv2.cvtColor(frame_gray, cv2.COLOR_GRAY2BGR) - # show # cv2.rectangle( # image_brg, @@ -1061,23 +1068,24 @@ def External_Run_AHSF(frame_gray): major_diameter = math.sqrt(width**2 + height**2) minor_diameter = min(width, height) average_diameter = (major_diameter + minor_diameter) / 2 -# print(x_center, y_center) + print(x_center, y_center) return frame_gray, frame_clear_resize, x_center, y_center, average_diameter - # return frame_gray, 0.0, 0.0, 0.0 - # if imshow_enable: - # cv2.imshow("pppp", image_brg) - # if cv2.waitKey(1) & 0xFF == ord("q"): - # pass - # if save_video: - # video_wr.write(image_brg) - # if save_video: - # video_wr.release() - # logger.info("video output: {}".format(output_video_path)) - # cap.release() - # if imshow_enable: - # cv2.destroyAllWindows() +# return frame_gray, 0.0, 0.0, 0.0 +# if imshow_enable: +# cv2.imshow("pppp", image_brg) +# if cv2.waitKey(1) & 0xFF == ord("q"): +# pass +# if save_video: +# video_wr.write(image_brg) + +# if save_video: +# video_wr.release() +# logger.info("video output: {}".format(output_video_path)) +# cap.release() +# if imshow_enable: +# cv2.destroyAllWindows() # main_end_time = timeit.default_timer() diff --git a/EyeTrackApp/camera.py b/EyeTrackApp/camera.py index 93653c2..c3951ec 100644 --- a/EyeTrackApp/camera.py +++ b/EyeTrackApp/camera.py @@ -83,7 +83,7 @@ class Camera: should_push = True # If things aren't open, retry until they are. Don't let read requests come in any earlier # than this, otherwise we can deadlock ourselves. - if self.config.capture_source != None and self.config.capture_source != "" and len(self.config.capture_source) > 3: + if self.config.capture_source != None and self.config.capture_source != "": self.current_capture_source = self.config.capture_source if "COM" in str(self.current_capture_source): if ( diff --git a/EyeTrackApp/eye_processor.py b/EyeTrackApp/eye_processor.py index a082b26..5471ca4 100644 --- a/EyeTrackApp/eye_processor.py +++ b/EyeTrackApp/eye_processor.py @@ -394,10 +394,14 @@ class EyeProcessor: pass self.hasrac_en = True - self.current_image_gray, resize_img, self.rawx, self.rawy, self.radius = External_Run_AHSF( - self.current_image_gray - ) - self.current_image_gray_clean = resize_img + ( + self.current_image_gray, + resize_img, + self.rawx, + self.rawy, + self.radius, + ) = External_Run_AHSF(self.current_image_gray) + self.current_image_gray_clean = resize_img.copy() self.thresh = resize_img ( @@ -436,7 +440,6 @@ class EyeProcessor: pass self.hasrac_en = True - # todo: add process to initialise er_hsrac when resolution changes self.rawx, self.rawy, self.thresh, self.radius = self.er_hsf.run( self.current_image_gray ) @@ -528,9 +531,13 @@ class EyeProcessor: ) else: pass - self.current_image_gray, resize_img, self.rawx, self.rawy, self.radius = External_Run_AHSF( - self.current_image_gray - ) + ( + self.current_image_gray, + resize_img, + self.rawx, + self.rawy, + self.radius, + ) = External_Run_AHSF(self.current_image_gray) self.thresh = self.current_image_gray self.out_x, self.out_y, self.avg_velocity = cal.cal_osc( self, self.rawx, self.rawy