diff --git a/src/Drone_gesture_operation/main.py b/src/Drone_gesture_operation/main.py index 414af6c40d..17a108a3c8 100644 --- a/src/Drone_gesture_operation/main.py +++ b/src/Drone_gesture_operation/main.py @@ -97,6 +97,7 @@ def process_frame(self, frame): area = cv.contourArea(cnt) if area > 1000: + # 3. 手势分类(修改输出文本映射:Fist→stop, Point→front, Palm→back) # 3. 手势分类(修改Point为仅食指+中指(2根手指)) # 3. 手势分类(新增五指识别) hull = cv.convexHull(cnt) @@ -105,6 +106,18 @@ def process_frame(self, frame): # 计算手指数量 finger_count = self.count_fingers(cnt, frame_small) + # 手势判断逻辑(仅修改输出文本) + if solidity > 0.85: + # 密实度高 = 握拳 → 输出stop + current_gesture = "stop" + elif finger_count == 2: + # 仅2根手指 = 食指+中指 → 输出front + current_gesture = "front" + elif finger_count >= 4: + # 4-5根手指 = 手掌张开 → 输出back + current_gesture = "back" + elif finger_count == 1: + # 1根手指 = 单指(归为None) # 手势判断逻辑(核心修改) if solidity > 0.85: # 密实度高 = 握拳 @@ -259,6 +272,7 @@ def main(): if len(set(self.gesture_buffer)) == 1: self.stable_gesture = self.gesture_buffer[0] + # 5. 绘制极简UI(显示修改后的手势文本) # 5. 绘制极简UI(仅保留手势和FPS显示) # 5. 绘制极简UI(仅保留手势和FPS显示,移除手指数量) # 5. 绘制极简UI(控制绘制耗时) @@ -285,6 +299,9 @@ def run(self): capture_thread = threading.Thread(target=self.capture_frames, args=(cap,), daemon=True) capture_thread.start() + # 修改控制台提示文本,匹配新的输出 + print(f"✅ 帧率锁定 {self.target_fps} 帧 | ESC退出") + print("💡 把手放在画面中间,握拳=stop,伸食指+中指=front,五指张开=back") print(f"✅ 帧率锁定 {self.target_fps} 帧 | ESC退出") print("💡 把手放在画面中间,握拳=Fist,伸食指+中指=Point,五指张开=Palm") print("💡 把手放在画面中间,握拳=Fist,伸食指=Point,五指张开=Palm") @@ -327,6 +344,7 @@ def run(self): recognizer = StableFPSHandRecognizer(target_fps=30) recognizer.run() recognizer.run() + recognizer.run() recognizer.run() # 7. 稳定输出(连续2帧相同) if current_gesture == last_gesture: