mirror of
https://github.com/jjaldridge2009/Project_Xs.git
synced 2024-10-05 14:57:12 +02:00
multi camera support
This commit is contained in:
parent
9038d3df07
commit
46e9e24680
@ -16,5 +16,6 @@
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
]
|
],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -11,5 +11,6 @@
|
|||||||
"thresh": 0.9,
|
"thresh": 0.9,
|
||||||
"white_delay": 0,
|
"white_delay": 0,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -11,5 +11,6 @@
|
|||||||
"thresh": 0.75,
|
"thresh": 0.75,
|
||||||
"white_delay": 2,
|
"white_delay": 2,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -11,5 +11,6 @@
|
|||||||
"thresh": 0.9,
|
"thresh": 0.9,
|
||||||
"white_delay": 0,
|
"white_delay": 0,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -16,5 +16,6 @@
|
|||||||
91,
|
91,
|
||||||
530,
|
530,
|
||||||
300
|
300
|
||||||
]
|
],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -16,5 +16,6 @@
|
|||||||
91,
|
91,
|
||||||
530,
|
530,
|
||||||
300
|
300
|
||||||
]
|
],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -11,5 +11,6 @@
|
|||||||
"thresh": 0.75,
|
"thresh": 0.75,
|
||||||
"white_delay": 3.0,
|
"white_delay": 3.0,
|
||||||
"advance_delay": 3,
|
"advance_delay": 3,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -11,5 +11,6 @@
|
|||||||
"thresh": 0.9,
|
"thresh": 0.9,
|
||||||
"white_delay": 0,
|
"white_delay": 0,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -6,5 +6,6 @@
|
|||||||
"thresh": 0.9,
|
"thresh": 0.9,
|
||||||
"white_delay": 0,
|
"white_delay": 0,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
@ -34,7 +34,8 @@ class Application(tk.Frame):
|
|||||||
"thresh": 0.9,
|
"thresh": 0.9,
|
||||||
"white_delay": 0.0,
|
"white_delay": 0.0,
|
||||||
"advance_delay": 0,
|
"advance_delay": 0,
|
||||||
"crop": [0,0,0,0]
|
"crop": [0,0,0,0],
|
||||||
|
"camera": 0
|
||||||
}
|
}
|
||||||
self.pack()
|
self.pack()
|
||||||
self.create_widgets()
|
self.create_widgets()
|
||||||
@ -65,6 +66,9 @@ class Application(tk.Frame):
|
|||||||
self.prefix_input = ttk.Entry(self)
|
self.prefix_input = ttk.Entry(self)
|
||||||
self.prefix_input.grid(column=1,row=2)
|
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_var = tk.IntVar()
|
||||||
self.monitor_window = ttk.Checkbutton(self,text="Monitor Window",variable=self.monitor_window_var)
|
self.monitor_window = ttk.Checkbutton(self,text="Monitor Window",variable=self.monitor_window_var)
|
||||||
self.monitor_window.grid(column=2,row=2)
|
self.monitor_window.grid(column=2,row=2)
|
||||||
@ -149,6 +153,8 @@ class Application(tk.Frame):
|
|||||||
self.whi_del.insert(0, 0.0)
|
self.whi_del.insert(0, 0.0)
|
||||||
self.adv_del.delete(0, tk.END)
|
self.adv_del.delete(0, tk.END)
|
||||||
self.adv_del.insert(0, 0)
|
self.adv_del.insert(0, 0)
|
||||||
|
self.camera_index.delete(0, tk.END)
|
||||||
|
self.camera_index.insert(0, 0)
|
||||||
|
|
||||||
self.after_task()
|
self.after_task()
|
||||||
|
|
||||||
@ -192,6 +198,8 @@ class Application(tk.Frame):
|
|||||||
self.whi_del.insert(0, self.config_json["white_delay"])
|
self.whi_del.insert(0, self.config_json["white_delay"])
|
||||||
self.adv_del.delete(0, tk.END)
|
self.adv_del.delete(0, tk.END)
|
||||||
self.adv_del.insert(0, self.config_json["advance_delay"])
|
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 = cv2.imread(self.config_json["image"], cv2.IMREAD_GRAYSCALE)
|
||||||
self.player_eye_tk = self.cv_image_to_tk(self.player_eye)
|
self.player_eye_tk = self.cv_image_to_tk(self.player_eye)
|
||||||
self.eye_display['image'] = self.player_eye_tk
|
self.eye_display['image'] = self.player_eye_tk
|
||||||
@ -229,7 +237,7 @@ class Application(tk.Frame):
|
|||||||
|
|
||||||
def monitoring_work(self):
|
def monitoring_work(self):
|
||||||
self.tracking = False
|
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)
|
prng = rngtool.recov(blinks, intervals)
|
||||||
|
|
||||||
self.monitor_blink_button['text'] = "Monitor Blinks"
|
self.monitor_blink_button['text'] = "Monitor Blinks"
|
||||||
@ -331,7 +339,7 @@ class Application(tk.Frame):
|
|||||||
self.s01_23.insert(1.0,s01+"\n"+s23)
|
self.s01_23.insert(1.0,s01+"\n"+s23)
|
||||||
|
|
||||||
print([hex(x) for x in state])
|
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)
|
reidentified_rng, adv = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks, return_advance=True)
|
||||||
|
|
||||||
|
|
||||||
@ -415,10 +423,11 @@ class Application(tk.Frame):
|
|||||||
from windowcapture import WindowCapture
|
from windowcapture import WindowCapture
|
||||||
video = WindowCapture(self.config_json["WindowPrefix"],self.config_json["crop"])
|
video = WindowCapture(self.config_json["WindowPrefix"],self.config_json["crop"])
|
||||||
else:
|
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_WIDTH,1920)
|
||||||
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
||||||
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
|
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
|
||||||
|
print(f"camera {self.config_json['camera']}")
|
||||||
|
|
||||||
|
|
||||||
while self.previewing:
|
while self.previewing:
|
||||||
@ -455,6 +464,7 @@ class Application(tk.Frame):
|
|||||||
self.config_json["white_delay"] = float(self.whi_del.get())
|
self.config_json["white_delay"] = float(self.whi_del.get())
|
||||||
self.config_json["advance_delay"] = int(self.adv_del.get())
|
self.config_json["advance_delay"] = int(self.adv_del.get())
|
||||||
self.config_json["MonitorWindow"] = self.monitor_window_var.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.adv['text'] = self.advances
|
||||||
self.cd['text'] = self.count_down
|
self.cd['text'] = self.count_down
|
||||||
self.after(100,self.after_task)
|
self.after(100,self.after_task)
|
||||||
|
@ -16,7 +16,7 @@ def randrange(r,mi,ma):
|
|||||||
t = (r & 0x7fffff) / 8388607.0
|
t = (r & 0x7fffff) / 8388607.0
|
||||||
return t * mi + (1.0 - t) * ma
|
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
|
"""measuring the type and interval of player's blinks
|
||||||
|
|
||||||
Returns:
|
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
|
from windowcapture import WindowCapture
|
||||||
video = WindowCapture(WindowPrefix,crop)
|
video = WindowCapture(WindowPrefix,crop)
|
||||||
else:
|
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_WIDTH,1920)
|
||||||
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
||||||
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
|
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)
|
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
|
"""measuring the type and interval of pokemon's blinks
|
||||||
|
|
||||||
Returns:
|
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
|
from windowcapture import WindowCapture
|
||||||
video = WindowCapture(WindowPrefix, crop)
|
video = WindowCapture(WindowPrefix, crop)
|
||||||
else:
|
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_WIDTH,1920)
|
||||||
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
|
||||||
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
|
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
|
||||||
|
@ -12,7 +12,7 @@ def firstspecify():
|
|||||||
if player_eye is None:
|
if player_eye is None:
|
||||||
print("path is wrong")
|
print("path is wrong")
|
||||||
return
|
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)
|
prng = rngtool.recov(blinks, intervals)
|
||||||
|
|
||||||
waituntil = time.perf_counter()
|
waituntil = time.perf_counter()
|
||||||
@ -33,7 +33,7 @@ def reidentify():
|
|||||||
print("path is wrong")
|
print("path is wrong")
|
||||||
return
|
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)
|
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
|
||||||
if reidentified_rng is None:
|
if reidentified_rng is None:
|
||||||
print("couldn't reidentify state.")
|
print("couldn't reidentify state.")
|
||||||
@ -80,7 +80,7 @@ def stationary_timeline():
|
|||||||
print("path is wrong")
|
print("path is wrong")
|
||||||
return
|
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)
|
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
|
||||||
if reidentified_rng is None:
|
if reidentified_rng is None:
|
||||||
print("couldn't reidentify state.")
|
print("couldn't reidentify state.")
|
||||||
|
@ -11,7 +11,7 @@ def expr():
|
|||||||
if player_eye is None:
|
if player_eye is None:
|
||||||
print("path is wrong")
|
print("path is wrong")
|
||||||
return
|
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)
|
prng = rngtool.recov(blinks, intervals)
|
||||||
|
|
||||||
waituntil = time.perf_counter()
|
waituntil = time.perf_counter()
|
||||||
@ -44,7 +44,7 @@ def reidentify():
|
|||||||
print("path is wrong")
|
print("path is wrong")
|
||||||
return
|
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)
|
reidentified_rng = rngtool.reidentifyByBlinks(Xorshift(*state), observed_blinks)
|
||||||
|
|
||||||
waituntil = time.perf_counter()
|
waituntil = time.perf_counter()
|
||||||
|
Loading…
Reference in New Issue
Block a user