Skip to content

Commit fc56aba

Browse files
authored
Merge pull request #42 from RamesTheGeneric/main
Completed calibration tab
2 parents 184818e + d6bca7c commit fc56aba

15 files changed

+563
-111
lines changed

BabbleApp/algo_settings_widget.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ def render(self, window, event, values):
198198
except ValueError:
199199
pass # Ignore invalid float conversion
200200

201+
201202
if self.config.gui_model_file != values[self.gui_model_file]:
202203
self.config.gui_model_file = values[self.gui_model_file]
203204
changed = True
@@ -210,6 +211,7 @@ def render(self, window, event, values):
210211
except ValueError:
211212
pass # Ignore invalid float conversion
212213

214+
213215
if self.config.gui_use_gpu != values[self.gui_use_gpu]:
214216
self.config.gui_use_gpu = values[self.gui_use_gpu]
215217
changed = True
@@ -222,6 +224,7 @@ def render(self, window, event, values):
222224
except ValueError:
223225
pass # Ignore invalid int conversion
224226

227+
225228
if self.config.gui_runtime != str(values[self.gui_runtime]):
226229
self.config.gui_runtime = str(values[self.gui_runtime])
227230
changed = True

BabbleApp/babble_processor.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ def __init__(
6868
self.current_image_gray = None
6969
self.current_frame_number = None
7070
self.current_fps = None
71+
self.FRAMESIZE = [0,0,1]
7172

7273
self.calibration_frame_counter = None
7374

@@ -129,6 +130,7 @@ def capture_crop_rotate_image(self):
129130

130131
try:
131132
# Get frame from capture source, crop to ROI
133+
self.FRAMESIZE = self.current_image.shape
132134
self.current_image = self.current_image[
133135
int(self.config.roi_window_y): int(
134136
self.config.roi_window_y + self.config.roi_window_h
@@ -223,19 +225,20 @@ def run(self):
223225
new_blue_channel = red_channel
224226
new_green_channel = red_channel
225227
self.current_image = cv2.merge((new_blue_channel, new_green_channel, red_channel))
226-
227228
self.current_image_gray = cv2.cvtColor(
228-
self.current_image, cv2.COLOR_BGR2GRAY
229+
self.current_image, cv2.COLOR_BGR2GRAY
229230
)
230231
self.current_image_gray_clean = self.current_image_gray.copy() #copy this frame to have a clean image for blink algo
231232

232233

233234
run_model(self)
234-
if self.config.use_calibration:
235+
if self.settings.use_calibration:
235236
self.output = cal.cal_osc(self, self.output)
236237

237238
#else:
238239
# pass
239240
#print(self.output)
240241
self.output_images_and_update(CamInfo(self.current_algo, self.output))
241242

243+
def get_framesize(self):
244+
return self.FRAMESIZE

BabbleApp/babbleapp.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from osc import VRChatOSCReceiver, VRChatOSC
2929
from general_settings_widget import SettingsWidget
3030
from algo_settings_widget import AlgoSettingsWidget
31+
from calib_settings_widget import CalibSettingsWidget
3132
from utils.misc_utils import is_nt
3233
if is_nt:
3334
from winotify import Notification
@@ -41,9 +42,11 @@
4142
CAM_NAME = "-CAMWIDGET-"
4243
SETTINGS_NAME = "-SETTINGSWIDGET-"
4344
ALGO_SETTINGS_NAME = "-ALGOSETTINGSWIDGET-"
45+
CALIB_SETTINGS_NAME = "-CALIBSETTINGSWIDGET-"
4446
CAM_RADIO_NAME = "-CAMRADIO-"
4547
SETTINGS_RADIO_NAME = "-SETTINGSRADIO-"
4648
ALGO_SETTINGS_RADIO_NAME = "-ALGOSETTINGSRADIO-"
49+
CALIB_SETTINGS_RADIO_NAME = "-CALIBSETTINGSRADIO-"
4750

4851
page_url = "https://github.com/SummerSigh/ProjectBabble/releases/latest"
4952
appversion = "Babble v2.0.6 Alpha"
@@ -108,6 +111,7 @@ def main():
108111
settings = [
109112
SettingsWidget(Tab.SETTINGS, config, osc_queue),
110113
AlgoSettingsWidget(Tab.ALGOSETTINGS, config, osc_queue),
114+
CalibSettingsWidget(Tab.CALIBRATION, config, osc_queue),
111115
]
112116

113117
layout = [
@@ -133,6 +137,13 @@ def main():
133137
default=(config.cam_display_id == Tab.ALGOSETTINGS),
134138
key=ALGO_SETTINGS_RADIO_NAME,
135139
),
140+
sg.Radio(
141+
"Calibration",
142+
"TABSELECTRADIO",
143+
background_color="#292929",
144+
default=(config.cam_display_id == Tab.CALIBRATION),
145+
key=CALIB_SETTINGS_RADIO_NAME,
146+
),
136147

137148
],
138149
[
@@ -157,6 +168,13 @@ def main():
157168
visible=(config.cam_display_id in [Tab.ALGOSETTINGS]),
158169
background_color="#424042",
159170
),
171+
sg.Column(
172+
settings[2].widget_layout,
173+
vertical_alignment="top",
174+
key=CALIB_SETTINGS_NAME,
175+
visible=(config.cam_display_id in [Tab.CALIBRATION]),
176+
background_color="#424042",
177+
),
160178

161179
],
162180
]
@@ -167,6 +185,8 @@ def main():
167185
settings[0].start()
168186
if config.cam_display_id in [Tab.ALGOSETTINGS]:
169187
settings[1].start()
188+
if config.cam_display_id in [Tab.CALIBRATION]:
189+
settings[2].start()
170190

171191
# the cam needs to be running before it is passed to the OSC
172192
if config.settings.gui_ROSC:
@@ -206,9 +226,11 @@ def main():
206226
cams[0].start()
207227
settings[0].stop()
208228
settings[1].stop()
229+
settings[2].stop()
209230
window[CAM_NAME].update(visible=True)
210231
window[SETTINGS_NAME].update(visible=False)
211232
window[ALGO_SETTINGS_NAME].update(visible=False)
233+
window[CALIB_SETTINGS_NAME].update(visible=False)
212234
config.cam_display_id = Tab.CAM
213235
config.save()
214236

@@ -217,23 +239,39 @@ def main():
217239
elif values[SETTINGS_RADIO_NAME] and config.cam_display_id != Tab.SETTINGS:
218240
cams[0].stop()
219241
settings[1].stop()
242+
settings[2].stop()
220243
settings[0].start()
221244
window[CAM_NAME].update(visible=False)
222245
window[SETTINGS_NAME].update(visible=True)
223246
window[ALGO_SETTINGS_NAME].update(visible=False)
247+
window[CALIB_SETTINGS_NAME].update(visible=False)
224248
config.cam_display_id = Tab.SETTINGS
225249
config.save()
226250

227251

228252
elif values[ALGO_SETTINGS_RADIO_NAME] and config.cam_display_id != Tab.ALGOSETTINGS:
229253
cams[0].stop()
230254
settings[0].stop()
255+
settings[2].stop()
231256
settings[1].start()
232257
window[CAM_NAME].update(visible=False)
233258
window[SETTINGS_NAME].update(visible=False)
234259
window[ALGO_SETTINGS_NAME].update(visible=True)
260+
window[CALIB_SETTINGS_NAME].update(visible=False)
235261
config.cam_display_id = Tab.ALGOSETTINGS
236262
config.save()
263+
264+
elif values[CALIB_SETTINGS_RADIO_NAME] and config.cam_display_id != Tab.CALIBRATION:
265+
cams[0].start() # Allow tracking to continue in calibration tab
266+
settings[0].stop()
267+
settings[1].stop()
268+
settings[2].start()
269+
window[CAM_NAME].update(visible=False)
270+
window[SETTINGS_NAME].update(visible=False)
271+
window[ALGO_SETTINGS_NAME].update(visible=False)
272+
window[CALIB_SETTINGS_NAME].update(visible=True)
273+
config.cam_display_id = Tab.CALIBRATION
274+
config.save()
237275

238276

239277
# Otherwise, render all

BabbleApp/calib_settings_values.py

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
2+
def set_shapes(widget_id):
3+
shape_index = ["cheekPuffLeft", "cheekPuffRight", "cheekSuckLeft", "cheekSuckRight", "jawOpen", "jawForward", "jawLeft", "jawRight", "noseSneerLeft", "noseSneerRight", "mouthFunnel", "mouthPucker", "mouthLeft", "mouthRight",
4+
"mouthRollUpper", "mouthRollLower", "mouthShrugUpper", "mouthShrugLower", "mouthClose", "mouthSmileLeft",
5+
"mouthSmileRight", "mouthFrownLeft", "mouthFrownRight", "mouthDimpleLeft", "mouthDimpleRight", "mouthUpperUpLeft",
6+
"mouthUpperUpRight", "mouthLowerDownLeft", "mouthLowerDownRight", "mouthPressLeft", "mouthPressRight", "mouthStretchLeft",
7+
"mouthStretchRight", "tongueOut", "tongueUp", "tongueDown", "tongueLeft", "tongueRight", "tongueRoll", "tongueBendDown", "tongueCurlUp", "tongueSquish", "tongueFlat", "tongueTwistLeft", "tongueTwistRight"]
8+
9+
shape = [
10+
[
11+
f"-CHEEKPUFFLEFTMIN{widget_id}-",
12+
f"-CHEEKPUFFRIGHTMIN{widget_id}-",
13+
f"-CHEEKSUCKLEFTMIN{widget_id}-",
14+
f"-CHEEKSUCKRIGHTMIN{widget_id}-",
15+
f"-JAWOPENMIN{widget_id}-",
16+
f"-JAWFORWARDMIN{widget_id}-",
17+
f"-JAWLEFTMIN{widget_id}-",
18+
f"-JAWRIGHTMIN{widget_id}-",
19+
f"-NOSESNEERLEFTMIN{widget_id}-",
20+
f"-NOSESNEERRIGHTMIN{widget_id}-",
21+
f"-MOUTHFUNNELMIN{widget_id}-",
22+
f"-MOUTHPUCKERMIN{widget_id}-",
23+
f"-MOUTHLEFTMIN{widget_id}-",
24+
f"-MOUTHRIGHTMIN{widget_id}-",
25+
f"-MOUTHROLLUPPERMIN{widget_id}-",
26+
f"-MOUTHROLLLOWERMIN{widget_id}-",
27+
f"-MOUTHSHRUGUPPERMIN{widget_id}-",
28+
f"-MOUTHSHRUGLOWERMIN{widget_id}-",
29+
f"-MOUTHCLOSEMIN{widget_id}-",
30+
f"-MOUTHSMILELEFTMIN{widget_id}-",
31+
f"-MOUTHSMILERIGHTMIN{widget_id}-",
32+
f"-MOUTHFROWNLEFTMIN{widget_id}-",
33+
f"-MOUTHFROWNRIGHTMIN{widget_id}-",
34+
f"-MOUTHDIMPLELEFTMIN{widget_id}-",
35+
f"-MOUTHDIMPLERIGHTMIN{widget_id}-",
36+
f"-MOUTHUPPERUPLEFTMIN{widget_id}-",
37+
f"-MOUTHUPPERUPRIGHTMIN{widget_id}-",
38+
f"-MOUTHLOWERDOWNLEFTMIN{widget_id}-",
39+
f"-MOUTHLOWERDOWNRIGHTMIN{widget_id}-",
40+
f"-MOUTHPRESSLEFTMIN{widget_id}-",
41+
f"-MOUTHPRESSRIGHTMIN{widget_id}-",
42+
f"-MOUTHSTRETCHLEFTMIN{widget_id}-",
43+
f"-MOUTHSTRETCHRIGHTMIN{widget_id}-",
44+
f"-TONGUEOUTMIN{widget_id}-",
45+
f"-TONGUEUPMIN{widget_id}-",
46+
f"-TONGUEDOWNMIN{widget_id}-",
47+
f"-TONGUELEFTMIN{widget_id}-",
48+
f"-TONGUERIGHTMIN{widget_id}-",
49+
f"-TONGUEROLLMIN{widget_id}-",
50+
f"-TONGUEBENDDOWNMIN{widget_id}-",
51+
f"-TONGUECURLUPMIN{widget_id}-",
52+
f"-TONGUESQUISHMIN{widget_id}-",
53+
f"-TONGUEFLATMIN{widget_id}-",
54+
f"-TONGUETWISTLEFTMIN{widget_id}-",
55+
f"-TONGUETWISTRIGHTMIN{widget_id}-",
56+
],
57+
[
58+
f"-CHEEKPUFFLEFTMAX{widget_id}-",
59+
f"-CHEEKPUFFRIGHTMAX{widget_id}-",
60+
f"-CHEEKSUCKLEFTMAX{widget_id}-",
61+
f"-CHEEKSUCKRIGHTMAX{widget_id}-",
62+
f"-JAWOPENMAX{widget_id}-",
63+
f"-JAWFORWARDMAX{widget_id}-",
64+
f"-JAWLEFTMAX{widget_id}-",
65+
f"-JAWRIGHTMAX{widget_id}-",
66+
f"-NOSESNEERLEFTMAX{widget_id}-",
67+
f"-NOSESNEERRIGHTMAX{widget_id}-",
68+
f"-MOUTHFUNNELMAX{widget_id}-",
69+
f"-MOUTHPUCKERMAX{widget_id}-",
70+
f"-MOUTHLEFTMAX{widget_id}-",
71+
f"-MOUTHRIGHTMAX{widget_id}-",
72+
f"-MOUTHROLLUPPERMAX{widget_id}-",
73+
f"-MOUTHROLLLOWERMAX{widget_id}-",
74+
f"-MOUTHSHRUGUPPERMAX{widget_id}-",
75+
f"-MOUTHSHRUGLOWERMAX{widget_id}-",
76+
f"-MOUTHCLOSEMAX{widget_id}-",
77+
f"-MOUTHSMILELEFTMAX{widget_id}-",
78+
f"-MOUTHSMILERIGHTMAX{widget_id}-",
79+
f"-MOUTHFROWNLEFTMAX{widget_id}-",
80+
f"-MOUTHFROWNRIGHTMAX{widget_id}-",
81+
f"-MOUTHDIMPLELEFTMAX{widget_id}-",
82+
f"-MOUTHDIMPLERIGHTMAX{widget_id}-",
83+
f"-MOUTHUPPERUPLEFTMAX{widget_id}-",
84+
f"-MOUTHUPPERUPRIGHTMAX{widget_id}-",
85+
f"-MOUTHLOWERDOWNLEFTMAX{widget_id}-",
86+
f"-MOUTHLOWERDOWNRIGHTMAX{widget_id}-",
87+
f"-MOUTHPRESSLEFTMAX{widget_id}-",
88+
f"-MOUTHPRESSRIGHTMAX{widget_id}-",
89+
f"-MOUTHSTRETCHLEFTMAX{widget_id}-",
90+
f"-MOUTHSTRETCHRIGHTMAX{widget_id}-",
91+
f"-TONGUEOUTMAX{widget_id}-",
92+
f"-TONGUEUPMAX{widget_id}-",
93+
f"-TONGUEDOWNMAX{widget_id}-",
94+
f"-TONGUELEFTMAX{widget_id}-",
95+
f"-TONGUERIGHTMAX{widget_id}-",
96+
f"-TONGUEROLLMAX{widget_id}-",
97+
f"-TONGUEBENDDOWNMAX{widget_id}-",
98+
f"-TONGUECURLUPMAX{widget_id}-",
99+
f"-TONGUESQUISHMAX{widget_id}-",
100+
f"-TONGUEFLATMAX{widget_id}-",
101+
f"-TONGUETWISTLEFTMAX{widget_id}-",
102+
f"-TONGUETWISTRIGHTMAX{widget_id}-",
103+
],
104+
105+
]
106+
return shape_index, shape
107+
108+

0 commit comments

Comments
 (0)