multi camera support

This commit is contained in:
Lincoln-LM 2022-01-05 11:24:28 -07:00
parent 9038d3df07
commit 46e9e24680
13 changed files with 41 additions and 22 deletions

View File

@ -16,5 +16,6 @@
0,
0,
0
]
],
"camera": 0
}

View File

@ -11,5 +11,6 @@
"thresh": 0.9,
"white_delay": 0,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -11,5 +11,6 @@
"thresh": 0.75,
"white_delay": 2,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -11,5 +11,6 @@
"thresh": 0.9,
"white_delay": 0,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -16,5 +16,6 @@
91,
530,
300
]
],
"camera": 0
}

View File

@ -16,5 +16,6 @@
91,
530,
300
]
],
"camera": 0
}

View File

@ -11,5 +11,6 @@
"thresh": 0.75,
"white_delay": 3.0,
"advance_delay": 3,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -11,5 +11,6 @@
"thresh": 0.9,
"white_delay": 0,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -6,5 +6,6 @@
"thresh": 0.9,
"white_delay": 0,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}

View File

@ -34,7 +34,8 @@ class Application(tk.Frame):
"thresh": 0.9,
"white_delay": 0.0,
"advance_delay": 0,
"crop": [0,0,0,0]
"crop": [0,0,0,0],
"camera": 0
}
self.pack()
self.create_widgets()
@ -65,6 +66,9 @@ class Application(tk.Frame):
self.prefix_input = ttk.Entry(self)
self.prefix_input.grid(column=1,row=2)
self.camera_index = tk.Spinbox(self, from_= 0, to = 99, width = 5)
self.camera_index.grid(column=2,row=1)
self.monitor_window_var = tk.IntVar()
self.monitor_window = ttk.Checkbutton(self,text="Monitor Window",variable=self.monitor_window_var)
self.monitor_window.grid(column=2,row=2)
@ -149,6 +153,8 @@ class Application(tk.Frame):
self.whi_del.insert(0, 0.0)
self.adv_del.delete(0, tk.END)
self.adv_del.insert(0, 0)
self.camera_index.delete(0, tk.END)
self.camera_index.insert(0, 0)
self.after_task()
@ -192,6 +198,8 @@ class Application(tk.Frame):
self.whi_del.insert(0, self.config_json["white_delay"])
self.adv_del.delete(0, tk.END)
self.adv_del.insert(0, self.config_json["advance_delay"])
self.camera_index.delete(0, tk.END)
self.camera_index.insert(0, self.config_json["camera"])
self.player_eye = cv2.imread(self.config_json["image"], cv2.IMREAD_GRAYSCALE)
self.player_eye_tk = self.cv_image_to_tk(self.player_eye)
self.eye_display['image'] = self.player_eye_tk
@ -229,7 +237,7 @@ class Application(tk.Frame):
def monitoring_work(self):
self.tracking = False
blinks, intervals, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], tk_window=self, th=self.config_json["thresh"])
blinks, intervals, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], camera=self.config_json["camera"], tk_window=self, th=self.config_json["thresh"])
prng = rngtool.recov(blinks, intervals)
self.monitor_blink_button['text'] = "Monitor Blinks"
@ -331,7 +339,7 @@ class Application(tk.Frame):
self.s01_23.insert(1.0,s01+"\n"+s23)
print([hex(x) for x in state])
observed_blinks, _, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], tk_window=self, th=self.config_json["thresh"], size=20)
observed_blinks, _, offset_time = rngtool.tracking_blink(self.player_eye, *self.config_json["view"], MonitorWindow=self.config_json["MonitorWindow"], WindowPrefix=self.config_json["WindowPrefix"], crop=self.config_json["crop"], camera=self.config_json["camera"], tk_window=self, th=self.config_json["thresh"], size=20)
reidentified_rng, adv = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks, return_advance=True)
@ -415,10 +423,11 @@ class Application(tk.Frame):
from windowcapture import WindowCapture
video = WindowCapture(self.config_json["WindowPrefix"],self.config_json["crop"])
else:
video = cv2.VideoCapture(0,cv2.CAP_DSHOW)
video = cv2.VideoCapture(self.config_json["camera"],cv2.CAP_DSHOW)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
print(f"camera {self.config_json['camera']}")
while self.previewing:
@ -455,6 +464,7 @@ class Application(tk.Frame):
self.config_json["white_delay"] = float(self.whi_del.get())
self.config_json["advance_delay"] = int(self.adv_del.get())
self.config_json["MonitorWindow"] = self.monitor_window_var.get()
self.config_json["camera"] = int(self.camera_index.get())
self.adv['text'] = self.advances
self.cd['text'] = self.count_down
self.after(100,self.after_task)

View File

@ -16,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, th = 0.9, size = 40, MonitorWindow = False, WindowPrefix = "SysDVR-Client [PID ", crop = None, tk_window = None)->Tuple[List[int],List[int],float]:
def tracking_blink(img, roi_x, roi_y, roi_w, roi_h, th = 0.9, size = 40, MonitorWindow = False, WindowPrefix = "SysDVR-Client [PID ", crop = None, camera = 0, tk_window = None)->Tuple[List[int],List[int],float]:
"""measuring the type and interval of player's blinks
Returns:
@ -30,7 +30,7 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h, th = 0.9, size = 40, Monitor
from windowcapture import WindowCapture
video = WindowCapture(WindowPrefix,crop)
else:
video = cv2.VideoCapture(0,cv2.CAP_DSHOW)
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
@ -167,7 +167,7 @@ def tracking_blink_manual(size = 40, reidentify = False)->Tuple[List[int],List[i
return (blinks, intervals, offset_time)
def tracking_poke_blink(img, roi_x, roi_y, roi_w, roi_h, size = 60, MonitorWindow = False, WindowPrefix = "SysDVR-Client [PID ", crop = None)->Tuple[List[int],List[int],float]:
def tracking_poke_blink(img, roi_x, roi_y, roi_w, roi_h, size = 60, MonitorWindow = False, WindowPrefix = "SysDVR-Client [PID ", crop = None, camera = 0)->Tuple[List[int],List[int],float]:
"""measuring the type and interval of pokemon's blinks
Returns:
@ -180,7 +180,7 @@ def tracking_poke_blink(img, roi_x, roi_y, roi_w, roi_h, size = 60, MonitorWindo
from windowcapture import WindowCapture
video = WindowCapture(WindowPrefix, crop)
else:
video = cv2.VideoCapture(0,cv2.CAP_DSHOW)
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)

View File

@ -12,7 +12,7 @@ def firstspecify():
if player_eye is None:
print("path is wrong")
return
blinks, intervals, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"])
blinks, intervals, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"],camera=config["camera"])
prng = rngtool.recov(blinks, intervals)
waituntil = time.perf_counter()
@ -33,7 +33,7 @@ def reidentify():
print("path is wrong")
return
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"], size=20)
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"],camera=config["camera"], size=20)
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
if reidentified_rng is None:
print("couldn't reidentify state.")
@ -80,7 +80,7 @@ def stationary_timeline():
print("path is wrong")
return
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"], th=config["thresh"],size=20)
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"], th=config["thresh"],camera=config["camera"],size=20)
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
if reidentified_rng is None:
print("couldn't reidentify state.")

View File

@ -11,7 +11,7 @@ def expr():
if player_eye is None:
print("path is wrong")
return
blinks, intervals, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"])
blinks, intervals, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"],camera=config["camera"])
prng = rngtool.recov(blinks, intervals)
waituntil = time.perf_counter()
@ -44,7 +44,7 @@ def reidentify():
print("path is wrong")
return
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"], size=20)
observed_blinks, _, offset_time = rngtool.tracking_blink(player_eye, *config["view"], MonitorWindow=config["MonitorWindow"], WindowPrefix=config["WindowPrefix"], crop=config["crop"],camera=config["camera"], size=20)
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
waituntil = time.perf_counter()