From 92a67d656e856b0ffa54598aecc7aefdb6b757c5 Mon Sep 17 00:00:00 2001 From: Dinger <2542905616@qq.com> Date: Sun, 20 Feb 2022 09:55:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=E6=89=93?= =?UTF-8?q?=E5=BC=80=E3=80=81=E4=B8=8A=E4=B8=8B=E7=BF=BB=E9=A1=B5=E3=80=81?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/identify.cpython-38.pyc | Bin 6200 -> 7506 bytes identify.py | 182 ++++++++++++++++++---------- main.py | 32 +++-- 3 files changed, 142 insertions(+), 72 deletions(-) diff --git a/__pycache__/identify.cpython-38.pyc b/__pycache__/identify.cpython-38.pyc index 8e3f59d31fe2bb74f982b701ece0dc67e73c7d0c..9d08e41b78c1dcaaf3fac15fd6f528c2d8e42c9b 100644 GIT binary patch literal 7506 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 dbLv9GkJ~k}9* self.right_hand_points[0][0] and \ + self.right_hand_points[12][0] > self.right_hand_points[0][0] and \ + self.right_hand_points[16][0] > self.right_hand_points[0][0] and self.right_hand_points[20][0] > \ + self.right_hand_points[0][0]: + return True + return False + + def judge_step_two(self, is_left): + if is_left: + if self.judge_five() and self.left_hand_points[8][0] > self.left_hand_points[0][0] and \ + self.left_hand_points[12][0] > self.left_hand_points[0][0] and \ + self.left_hand_points[16][0] > self.left_hand_points[0][0] and self.left_hand_points[20][0] > \ + self.left_hand_points[0][0]: + return True + else: + if self.judge_five() and self.right_hand_points[8][0] < self.right_hand_points[0][0] and \ + self.right_hand_points[12][0] < self.right_hand_points[0][0] and \ + self.right_hand_points[16][0] < self.right_hand_points[0][0] and self.right_hand_points[20][0] < \ + self.right_hand_points[0][0]: + return True + return False def judge_page_up(self): - if self.page_up_count == 0: - if self.judge_five(): - self.last_wrist_point = self.hand_points[0] - self.page_up_count += 1 + if not self.right_hand_flag: return False - if self.judge_five() and self.hand_points[0][0] < self.last_wrist_point[0]: - if self.hand_points[0][0] > self.last_wrist_point[0]: - self.page_up_count = 0 - return False - if self.page_up_count >= 2: - self.page_up_count = 0 - self.last_wrist_point = (0, 0) + if self.step == 0: + self.lase_time = time.time() + if self.step == 0 and self.judge_step_one(False): + self.step = 1 + elif self.step == 1 and self.judge_step_two(False): + self.step = 3 + elif self.step == 2 and self.judge_zero(): + self.step = 3 + elif self.step == 3: + self.step = 0 + now_time = time.time() + if now_time - self.lase_time < 3: + self.lase_time = now_time return True - self.page_up_count += 1 - self.last_wrist_point = self.hand_points[0] + else: + self.lase_time = now_time + return False return False def judge_page_down(self): - # global last_wrist_point - # global page_down_count - # print("page_down_count = " + str(page_down_count)) - # print("last_wrist_point = " + str(last_wrist_point)) - # print("points[0] = " + str(points[0])) - if self.page_down_count == 0: - if self.judge_five(): - self.last_wrist_point = self.hand_points[0] - self.page_down_count += 1 + if not self.left_hand_flag: return False - if self.judge_five() and self.hand_points[0][0] > self.last_wrist_point[0]: - if self.hand_points[0][0] < self.last_wrist_point[0]: - self.page_down_count = 0 - return False - if self.page_down_count >= 2: - self.page_down_count = 0 - self.last_wrist_point = (0, 0) + if self.step == 0: + self.lase_time = time.time() + if self.step == 0 and self.judge_step_one(True): + self.step = 1 + elif self.step == 1 and self.judge_step_two(True): + self.step = 3 + elif self.step == 2 and self.judge_zero(): + self.step = 3 + elif self.step == 3: + self.step = 0 + now_time = time.time() + if now_time - self.lase_time < 3: + self.lase_time = now_time return True - self.page_down_count += 1 - self.last_wrist_point = self.hand_points[0] + else: + self.lase_time = now_time + return False return False def judge_control(self): if self.is_identify: if self.judge_one(): - # print("open_ppt") return 1 - elif self.judge_five(): - # print("ppt_up") + elif self.judge_page_up(): return 2 - elif self.judge_three(): - # print("ppt_down") + elif self.judge_page_down(): return 3 elif self.judge_zero(): - # print("ppt_end") return 4 else: print("other") diff --git a/main.py b/main.py index 2677abc..f1935cc 100644 --- a/main.py +++ b/main.py @@ -95,11 +95,15 @@ def control_draw(): def control_thread(v, flag): last_time = 0.0 + step = 0 while 1: + # print("step = " + str(step)) # print("control_thread") now_time = time.time() - time.sleep(0.1) + # time.sleep(0.1) # print(end - start) + + control_flag = v.value if now_time - last_time < 1: continue last_time = now_time @@ -108,16 +112,22 @@ def control_thread(v, flag): # elif control_flag == 6: # time.sleep(0.05) # start = time.time() - print("control_flag = " + str(v.value)) - control_flag = v.value - # if control_flag == 1: - # control_ppt_begin() - # if control_flag == 2: - # control_page_up() - # if control_flag == 3: - # control_page_down() - # if control_flag == 4: - # control_ppt_end() + print("control_flag = " + str(control_flag)) + if step == 0 and control_flag == 1: + control_ppt_begin() + # print("control_flag == 1") + step = 1 + elif step == 1: + if control_flag == 2: + control_page_up() + # print("control_flag == 2") + if control_flag == 3: + control_page_down() + # print("control_flag == 3") + if control_flag == 4: + control_ppt_end() + # print("control_flag == 4") + step = 0 # if control_flag == 5: # control_open_pencil() # if control_flag == 6: