mirror of
https://github.com/jjaldridge2009/Project_Xs.git
synced 2024-10-03 22:07:09 +02:00
manual reidentification
This commit is contained in:
parent
9142643dbf
commit
780a41364b
@ -102,39 +102,43 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h, th = 0.9, size = 40, sysdvr
|
||||
cv2.destroyAllWindows()
|
||||
return (blinks, intervals, offset_time)
|
||||
|
||||
def tracking_blink_manual(size = 40)->Tuple[List[int],List[int],float]:
|
||||
def tracking_blink_manual(size = 40, reidentify = False)->Tuple[List[int],List[int],float]:
|
||||
"""measuring the type and interval of player's blinks
|
||||
|
||||
Returns:
|
||||
blinks:List[int],intervals:list[int],offset_time:float: [description]
|
||||
"""
|
||||
|
||||
state = IDLE
|
||||
blinks = []
|
||||
intervals = []
|
||||
prev_time = 0
|
||||
|
||||
offset_time = 0
|
||||
while len(blinks)<size:
|
||||
if not reidentify:
|
||||
input()
|
||||
time_counter = time.perf_counter()
|
||||
print(f"Adv Since Last: {round((time_counter - prev_time)/1.018)} {(time_counter - prev_time)}")
|
||||
|
||||
while len(blinks)<size or state!=IDLE:
|
||||
input()
|
||||
time_counter = time.perf_counter()
|
||||
print(f"Adv Since Last: {round((time_counter - prev_time)/1.018)} {(time_counter - prev_time)}")
|
||||
if prev_time != 0 and time_counter - prev_time<0.7:
|
||||
blinks[-1] = 1
|
||||
print("double blink logged")
|
||||
else:
|
||||
blinks.append(0)
|
||||
interval = (time_counter - prev_time)/1.018
|
||||
interval_round = round(interval)
|
||||
intervals.append(interval_round)
|
||||
print("blink logged")
|
||||
print(f"Intervals {len(intervals)}/{size}")
|
||||
|
||||
if prev_time != 0 and time_counter - prev_time<0.7:
|
||||
blinks[-1] = 1
|
||||
print("double blink logged")
|
||||
if len(intervals)==size:
|
||||
offset_time = time_counter
|
||||
prev_time = time_counter
|
||||
else:
|
||||
blinks.append(0)
|
||||
interval = (time_counter - prev_time)/1.018
|
||||
interval_round = round(interval)
|
||||
intervals.append(interval_round)
|
||||
print("blink logged")
|
||||
print(f"Intervals {len(intervals)}/{size}")
|
||||
|
||||
blinks.append(int(input("Blink Type (0 = single, 1 = double): ")))
|
||||
print(f"Blinks {len(blinks)}/{size}")
|
||||
time_counter = time.perf_counter()
|
||||
if len(intervals)==size:
|
||||
offset_time = time_counter
|
||||
prev_time = time_counter
|
||||
|
||||
|
||||
|
||||
|
@ -2,14 +2,39 @@ import rngtool
|
||||
import cv2
|
||||
import time
|
||||
import json
|
||||
from xorshift import Xorshift
|
||||
|
||||
config = json.load(open("config.json"))
|
||||
|
||||
def reidentify():
|
||||
t0 = int(input("input state[0] (state 0/1): 0x"),16)
|
||||
t1 = int(input("input state[1] (state 0/1): 0x"),16)
|
||||
state = [t0 >> 64, t0 & 0xFFFFFFFF, t1 >> 64, t1 & 0xFFFFFFFF]
|
||||
|
||||
observed_blinks, _, offset_time = rngtool.tracking_blink_manual(size = 20, reidentify=True)
|
||||
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
|
||||
|
||||
waituntil = time.perf_counter()
|
||||
diff = round(waituntil-offset_time)+1
|
||||
reidentified_rng.getNextRandSequence(diff)
|
||||
|
||||
state = reidentified_rng.getState()
|
||||
print(hex(state[0]<<32|state[1]), hex(state[2]<<32|state[3]))
|
||||
|
||||
advances = 0
|
||||
|
||||
while True:
|
||||
advances += 1
|
||||
r = reidentified_rng.next()
|
||||
|
||||
waituntil += 1.018
|
||||
|
||||
print(f"advances:{advances}, blinks:{hex(r&0xF)}")
|
||||
|
||||
next_time = waituntil - time.perf_counter() or 0
|
||||
time.sleep(next_time)
|
||||
|
||||
def expr():
|
||||
player_eye = cv2.imread(config["image"], cv2.IMREAD_GRAYSCALE)
|
||||
if player_eye is None:
|
||||
print("path is wrong")
|
||||
return
|
||||
blinks, intervals, offset_time = rngtool.tracking_blink_manual()
|
||||
prng = rngtool.recov(blinks, intervals)
|
||||
|
||||
@ -34,4 +59,7 @@ def expr():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
expr()
|
||||
if input("Find State or Reidentify? (S/R): ") == "R":
|
||||
reidentify()
|
||||
else:
|
||||
expr()
|
Loading…
Reference in New Issue
Block a user