aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chuni-hands-evolved.py25
-rw-r--r--requirements.txtbin0 -> 168 bytes
2 files changed, 17 insertions, 8 deletions
diff --git a/chuni-hands-evolved.py b/chuni-hands-evolved.py
index 3bce15c..9a6fee3 100644
--- a/chuni-hands-evolved.py
+++ b/chuni-hands-evolved.py
@@ -65,7 +65,7 @@ def calculate_preview_size(width, height, max_height=720):
return new_width, new_height
def setup_gui(camera_width: int, camera_height: int, preview_width: int, preview_height: int) -> tk.Tk:
- global current_camera_index, x_slider, y_slider, spacing_slider, keystrokes_enabled, chuniio_enabled, update_rate, video_canvas
+ global current_camera_index, x_slider, y_slider, spacing_slider, sensitivity_var, keystrokes_enabled, chuniio_enabled, update_rate, video_canvas
root = tk.Tk()
root.title("chuni-hands-evolved")
@@ -175,6 +175,14 @@ def setup_gui(camera_width: int, camera_height: int, preview_width: int, preview
pass
width_spinbox.config(command=update_width)
+ # Sensitivity control
+ sensitivity_frame = tk.Frame(inputs_frame, bg=style["frame_bg"])
+ sensitivity_frame.pack(fill="x", pady=(0, 5))
+ tk.Label(sensitivity_frame, text="Sensitivity:", font=style["label_font"], bg=style["frame_bg"], width=15).pack(side="left")
+ sensitivity_var = StringVar(value="20") # Default sensitivity value
+ sensitivity_spinbox = tk.Spinbox(sensitivity_frame, from_=1, to=100, textvariable=sensitivity_var, width=5)
+ sensitivity_spinbox.pack(side="left", padx=5)
+
# Buttons
buttons_frame = tk.Frame(main_container, bg=style["frame_bg"], relief="ridge", bd=2, padx=10, pady=10)
buttons_frame.pack(fill="x")
@@ -242,7 +250,7 @@ def setup_gui(camera_width: int, camera_height: int, preview_width: int, preview
video_canvas.configure(width=canvas_width, height=canvas_height)
root.bind("<Configure>", on_window_resize)
- return (root, video_canvas, x_slider, y_slider, width_var, spacing_slider,
+ return (root, video_canvas, x_slider, y_slider, width_var, spacing_slider, sensitivity_var,
keystrokes_enabled, chuniio_enabled, update_rate)
def calibrate(frame):
@@ -261,14 +269,15 @@ def camera_loop(preview_width, preview_height, chuniio_shared_memory):
print("Error: Could not capture frame.")
continue
frame = cv2.flip(frame, 1)
- # Get offsets and spacing from the UI controls (assumed to be safe for reading)
+ # Get offsets, spacing, and sensitivity from the UI controls
try:
x_offset = int(x_slider.get())
y_offset = int(y_slider.get())
spacing = int(spacing_slider.get())
+ sensitivity = int(sensitivity_var.get())
except Exception:
- x_offset, y_offset, spacing = 0, 0, 100
-
+ x_offset, y_offset, spacing, sensitivity = 0, 0, 100, 20
+
# Update zone positions
for i, zone in enumerate(zones):
zone["x"] = base_positions[i]["x"] + x_offset
@@ -277,7 +286,7 @@ def camera_loop(preview_width, preview_height, chuniio_shared_memory):
# Process zones
for i, zone in enumerate(zones):
current_brightness = get_avg_brightness(frame, zone)
- if abs(current_brightness - zone_color_state[i]) > 20:
+ if abs(current_brightness - zone_color_state[i]) > sensitivity: # Use sensitivity value
if not ZONE_TRIGGERED_STATE[i]:
if keystrokes_enabled.get():
print(f"Key '{_UMIGIRI_32_AIRZONE_LAYOUT[i]}' pressed.")
@@ -345,7 +354,7 @@ def load_config() -> dict:
return {}
def main():
- global root, current_camera_index, cap, video_canvas, x_slider, y_slider, width_var, spacing_slider, keystrokes_enabled, chuniio_enabled, update_rate, CAMERA_WIDTH, CAMERA_HEIGHT, latest_frame, running
+ global root, current_camera_index, cap, video_canvas, x_slider, y_slider, width_var, spacing_slider, sensitivity_var, keystrokes_enabled, chuniio_enabled, update_rate, CAMERA_WIDTH, CAMERA_HEIGHT, latest_frame, running
print("Now starting up... please wait a bit...")
config = load_config()
current_camera_index = config.get("camera_index", 0)
@@ -370,7 +379,7 @@ def main():
else:
print("Error: Could not capture initial frame. Check your camera.")
- (root, video_canvas, x_slider, y_slider, width_var, spacing_slider,
+ (root, video_canvas, x_slider, y_slider, width_var, spacing_slider, sensitivity_var,
keystrokes_enabled, chuniio_enabled, update_rate) = setup_gui(CAMERA_WIDTH, CAMERA_HEIGHT, preview_width, preview_height)
x_slider.set(config.get("x_offset", 0))
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..c65763c
--- /dev/null
+++ b/requirements.txt
Binary files differ
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage