mirror of
https://github.com/EyeTrackVR/EyeTrackVR.git
synced 2025-11-04 14:39:42 +08:00
auto create file for IBO
This commit is contained in:
parent
a67535ce01
commit
0622820491
1
EyeTrackApp/IBO.csv
Normal file
1
EyeTrackApp/IBO.csv
Normal file
@ -0,0 +1 @@
|
||||
|
||||
|
|
@ -248,28 +248,28 @@ class EyeProcessor:
|
||||
def HSRACM(self):
|
||||
cx, cy, thresh, gray_frame = External_Run_HSRACS.HSRACS(self)
|
||||
self.current_image_gray = gray_frame
|
||||
|
||||
# thresh = gray_frame
|
||||
if self.prev_x == None:
|
||||
self.prev_x = cx
|
||||
self.prev_y = cy
|
||||
#print(self.prev_x, self.prev_y, cx, cy)
|
||||
#print(self.prev_x, self.prev_y, cx, cy)
|
||||
# #filter values with too much movement
|
||||
# if (cx - self.prev_x) <= 45 and (cy - self.prev_y) <= 45 :
|
||||
# self.prev_x = cx
|
||||
# self.prev_y = cy
|
||||
print(self.blinkvalue)
|
||||
eyeopen = intense(cx, cy, self.current_image_gray)
|
||||
out_x, out_y = cal_osc(self, cx, cy)
|
||||
|
||||
if cx == 0:
|
||||
self.output_images_and_update(thresh, EyeInformation(InformationOrigin.HSRAC, out_x, out_y, 0, self.blinkvalue)) #update app
|
||||
self.output_images_and_update(thresh, EyeInformation(InformationOrigin.HSRAC, out_x, out_y, 0, eyeopen)) #update app
|
||||
else:
|
||||
|
||||
self.output_images_and_update(thresh, EyeInformation(InformationOrigin.HSRAC, out_x, out_y, 0, self.blinkvalue))
|
||||
self.output_images_and_update(thresh, EyeInformation(InformationOrigin.HSRAC, out_x, out_y, 0, eyeopen))
|
||||
# else:
|
||||
# print("EYE MOVED TOO FAST")
|
||||
# self.output_images_and_update(thresh, EyeInformation(InformationOrigin.HSRAC, 0, 0, 0, False))
|
||||
def HSFM(self):
|
||||
cx, cy, frame = External_Run_HSF.HSFS(self)
|
||||
eyeopen = intense(cx, cy, self.current_image_gray) #not sure if i want this run on every algo or on the system..
|
||||
eyeopen = intense(cx, cy, self.current_image_gray)
|
||||
out_x, out_y = cal_osc(self, cx, cy)
|
||||
if cx == 0:
|
||||
self.output_images_and_update(frame, EyeInformation(InformationOrigin.HSF, out_x, out_y, 0, eyeopen)) #update app
|
||||
|
||||
@ -10,16 +10,27 @@ OSCport=9000 #VR Chat OSC port
|
||||
client = udp_client.SimpleUDPClient(OSCip, OSCport)
|
||||
#higher intensity means more closed/ more white/less pupil
|
||||
|
||||
# HOW THIS WORKS:
|
||||
# Here is my idea:
|
||||
#Hm I need an acronym for this, any ideas?
|
||||
#IBO Intensity Based Openess
|
||||
|
||||
|
||||
# HOW THIS WORKS:
|
||||
# we get the intensity of pupil area from HSF crop, When the eyelid starts to close, the pupil starts being obstructed by skin which is generally lighter than the pupil.
|
||||
# This causes the intensity to increase. We save all of the darkest intensities of each pupil position to calculate for pupil movement.
|
||||
# ex. when you look up there is less pupil visible, which results in an uncalculated change in intensity even though the eyelid has not moved in a meaningful way.
|
||||
# We compare the darkest intensity of that area, to the lightest (global) intensity to find the appropriate openness state via a float.
|
||||
fname = "test_list.txt"
|
||||
data = pd.read_csv(fname, sep=",")
|
||||
|
||||
#TODO we need more pixel points for smooth operation, lets get this setup in hsrac and add a .25 or .33 range?
|
||||
fname = "IBO.csv" #TODO Expose as setting
|
||||
|
||||
try:
|
||||
data = pd.read_csv(fname, sep=",")
|
||||
except:
|
||||
cf = open(fname, "w")
|
||||
cf.write("xy,intensity")
|
||||
cf.close()
|
||||
data = pd.read_csv(fname, sep=",")
|
||||
|
||||
#TODO we need more pixel points for smooth operation, lets get this setup in hsrac
|
||||
|
||||
def intense(x, y, frame):
|
||||
upper_x = x + 25
|
||||
@ -77,7 +88,7 @@ def intense(x, y, frame):
|
||||
print(intensity, maxp, minp, x, y)
|
||||
# eyeopen = max(0.0, min(1.0, eyeopen))
|
||||
# print(f"EYEOPEN: {eyeopen}")
|
||||
client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eyeopen)) # open r
|
||||
client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eyeopen)) # open r
|
||||
client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eyeopen))
|
||||
except:
|
||||
print('[INFO] Something went wrong, assuming blink.')
|
||||
|
||||
@ -45,7 +45,8 @@ class VRChatOSC:
|
||||
except:
|
||||
continue
|
||||
#eye_info.blink
|
||||
if not eye_info.blink:
|
||||
print(eye_info.blink)
|
||||
if eye_info.blink > 0.1: #if eye is not "closed" this will need tuning
|
||||
if self.config.tracker_single_eye == 1 or self.config.tracker_single_eye == 2:
|
||||
self.client.send_message("/avatar/parameters/LeftEyeX", eye_info.x) # only one eye is detected or there is an error. Send mirrored data to both eyes.
|
||||
self.client.send_message("/avatar/parameters/RightEyeX", eye_info.x)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user