diff --git a/src/rngtool.py b/src/rngtool.py index 2f5cf8c..d9e4034 100644 --- a/src/rngtool.py +++ b/src/rngtool.py @@ -1,4 +1,8 @@ -from typing import List, Tuple +"""[summary] + +""" +from typing import List +from typing import Tuple import time import cv2 from xorshift import Xorshift @@ -12,7 +16,7 @@ def randrange(r,mi,ma): t = (r & 0x7fffff) / 8388607.0 return t * mi + (1.0 - t) * ma -def tracking_blink(img, roi_x, roi_y, roi_w, roi_h)->Tuple[List[int],List[int],float]: +def tracking_blink(img, roi_x, roi_y, roi_w, roi_h, size = 40)->Tuple[List[int],List[int],float]: """measuring the type and interval of player's blinks Returns: @@ -20,7 +24,7 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h)->Tuple[List[int],List[int],f """ eye = img - + video = cv2.VideoCapture(0,cv2.CAP_DSHOW) video.set(cv2.CAP_PROP_FRAME_WIDTH,1920) video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080) @@ -29,7 +33,6 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h)->Tuple[List[int],List[int],f state = IDLE blinks = [] intervals = [] - prev_match = 0 prev_time = 0 prev_roi = None @@ -38,24 +41,25 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h)->Tuple[List[int],List[int],f offset_time = 0 # 瞬きの観測 - while len(blinks)<40 or state!=IDLE: - ret, frame = video.read() + while len(blinks)Tuple[List[int],List[int],f state = DOUBLE elif state==DOUBLE: pass - + if state!=IDLE and time_counter - prev_time>0.7: state = IDLE print(debug_txt) @@ -98,23 +102,21 @@ def tracking_poke_blink(img, roi_x, roi_y, roi_w, roi_h, size = 60)->Tuple[List[ prev_roi = None prev_time = time.perf_counter() - offset_time = 0 # 瞬きの観測 while len(intervals)Xorshift: Recover the xorshift from the type and interval of blinks. Args: - blinks (List[int]): - intervals (List[int]): + blinks (List[int]): + intervals (List[int]): Returns: List[int]: internalstate @@ -158,7 +160,59 @@ def recov(blinks:List[int],rawintervals:List[int])->Xorshift: result.getNextRandSequence(advanced_frame) return result +def reidentifyByBlinks(rng:Xorshift, observed_blinks:List[int], search_min=0, search_max=10**6)->Xorshift: + if search_maxXorshift: + """Recover the xorshift from the interval of Munchlax blinks. + + Args: + rawintervals (List[float]): [description] + + Returns: + Xorshift: [description] + """ advances = len(rawintervals) intervals = [interval+0.048 for interval in rawintervals]#観測結果のずれを補正 intervals = intervals[1:]#最初の観測結果はノイズなのでそれ以降を使う