diff --git a/.idea/code.iml b/.idea/code.iml
index ffe6a26..c9c4b2c 100644
--- a/.idea/code.iml
+++ b/.idea/code.iml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b780b4b..60a1560 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/__pycache__/detect.cpython-37.pyc b/__pycache__/detect.cpython-37.pyc
new file mode 100644
index 0000000..dc32f3a
Binary files /dev/null and b/__pycache__/detect.cpython-37.pyc differ
diff --git a/__pycache__/identify.cpython-37.pyc b/__pycache__/identify.cpython-37.pyc
new file mode 100644
index 0000000..25e2428
Binary files /dev/null and b/__pycache__/identify.cpython-37.pyc differ
diff --git a/__pycache__/util.cpython-37.pyc b/__pycache__/util.cpython-37.pyc
new file mode 100644
index 0000000..b78bdc1
Binary files /dev/null and b/__pycache__/util.cpython-37.pyc differ
diff --git a/detect.py b/detect.py
index 7725de8..868336d 100644
--- a/detect.py
+++ b/detect.py
@@ -53,7 +53,7 @@ class YOLOV5(object):
iou_thres=0.45,
classes=None,
imgsz=640,
- weights="./yolov5s.pt"):
+ weights="C:/Users/Dinger/Desktop/work/lesson/graduation_project/graduation-project/resource/yolov5s.pt"):
# 超参数设置
self.conf_thres = conf_thres # 置信度阈值
self.iou_thres = iou_thres # iou阈值
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..d59e310
Binary files /dev/null and b/favicon.ico differ
diff --git a/identify.py b/identify.py
index 9b0db28..7391ce7 100644
--- a/identify.py
+++ b/identify.py
@@ -101,6 +101,8 @@ class Identify:
self.last_control_flag = 0
self.page_up_count = 0
self.page_down_count = 0
+ self.end_count = 0
+ self.pencil_count = 0
self.step_up = 0
self.step_down = 0
self.last_wrist_point = (0, 0)
@@ -142,15 +144,15 @@ class Identify:
# self.ml_identify.infer(image=self.image)
# continue
# self.catch_person_flag = True
+ # if not self.catch_person_flag:
+ # self.catch_person_flag = True
if not self.catch_person_flag:
- # self.catch_person_flag = True
self.person_results.clear()
self.left_hands.clear()
self.right_hands.clear()
self.deal_with_image()
self.find_points()
x1, y1, x2, y2 = self.find_target_person()
-
# print("no no no no no no no no no no no no no")
else:
# print("in True")
@@ -223,7 +225,7 @@ class Identify:
if not judge_zero(self.is_right_finger_straight):
return False
if util.Util.get_distance(self.left_hand_points[6], self.right_hand_points[6]) / \
- util.Util.get_distance(self.left_hand_points[5], self.left_hand_points[9]) > 2:
+ util.Util.get_distance(self.left_hand_points[5], self.left_hand_points[9]) > 2.5:
return False
return True
@@ -291,6 +293,8 @@ class Identify:
if not person_result[2]:
continue
standard_distance = util.Util.get_distance(person_result[1][7], person_result[1][8])
+ if standard_distance == 0:
+ continue
if util.Util.get_distance(person_result[1][4], person_result[2][4]) / standard_distance > 2:
continue
if util.Util.get_distance(person_result[1][8], person_result[2][8]) / standard_distance > 1:
@@ -454,7 +458,15 @@ class Identify:
return False
def judge_end(self):
- if self.left_hand_flag and self.right_hand_flag and judge_zero():
+ if not self.left_hand_flag:
+ self.end_count = 0
+ return False
+ if not judge_zero(self.is_left_finger_straight):
+ self.end_count = 0
+ return False
+ self.end_count += 1
+ if self.end_count > 10:
+ self.end_count = 0
return True
return False
@@ -464,11 +476,22 @@ class Identify:
if not self.judge_one(self.is_right_finger_straight):
return False
standard_distance = util.Util.get_distance(self.left_hand_points[7], self.right_hand_points[8])
+ if standard_distance == 0:
+ return False
# print(util.Util.get_distance(self.left_hand_points[8], self.right_hand_points[8]) / standard_distance)
if util.Util.get_distance(self.left_hand_points[8], self.right_hand_points[8]) / standard_distance < 1:
return True
return False
+ # def judge_pencil(self):
+ # if not self.judge_one(self.is_left_finger_straight):
+ # return False
+ # if self.right_hand_flag:
+ # return False
+ # self.pencil_count += 1
+ # if self.pencil_count > 5:
+ # self.pencil_count = 0
+
def judge_control(self):
if self.is_identify:
# print("len = " + str(len(self.identify_results.multi_handedness)))
@@ -489,7 +512,7 @@ class Identify:
elif self.judge_one(self.is_left_finger_straight) and judge_zero(self.is_right_finger_straight):
# print("5")
return 5
- elif self.left_hand_flag and judge_zero(self.is_left_finger_straight):
+ elif self.judge_end():
# print("6")
return 6
elif self.judge_system_over():
diff --git a/main.py b/main.py
index 5a88a55..87ffac3 100644
--- a/main.py
+++ b/main.py
@@ -1,3 +1,4 @@
+#!C:\Users\Dinger\anaconda3\envs\graduation_project2\python.exe
import multiprocessing
import sys
import tkinter
@@ -24,8 +25,8 @@ def control_page_down():
def control_ppt_begin():
- win32api.keybd_event(116, 0, 0, 0) # 代表按下f键
win32api.keybd_event(16, 0, 0, 0) # 代表按下f键
+ win32api.keybd_event(116, 0, 0, 0) # 代表按下f键
time.sleep(0.02)
win32api.keybd_event(116, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放f键
win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放f键
@@ -103,11 +104,6 @@ def control_thread(control_number, array, over_flag):
control_ppt_end()
step = 0
- # if control_flag == 5:
- # control_open_pencil()
- # if control_flag == 6:
- # control_draw()
-
def identify_thread(control_number, array, over_flag):
identify = Identify(control_number, array)
@@ -116,29 +112,16 @@ def identify_thread(control_number, array, over_flag):
def open_file():
file_path = askopenfilename(title=u'选择文件')
- # file_path = askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('H:/')))
if not open_ppt(file_path):
return False
control_number = multiprocessing.Value('i', 0)
array = multiprocessing.Array('i', 4)
over_flag = multiprocessing.Value('i', 0)
- # array2 = multiprocessing.Array()
p1 = multiprocessing.Process(target=identify_thread, args=(control_number, array, over_flag))
p2 = multiprocessing.Process(target=control_thread, args=(control_number, array, over_flag))
- # p3 = multiprocessing.Process(target=show_thread, args=(value, array))
p1.start()
- # p1.terminate()
p2.start()
return True
- # p3.start()
- # identify_t = threading.Thread(target=identify_thread)
- # print("control_flag1 = " + str(control_flag))
- # control_t = threading.Thread(target=control_thread)
- # print("control_flag2 = " + str(control_flag))
- # identify_t.setDaemon(True)
- # control_t.setDaemon(True)
- # identify_t.start()
- # control_t.start()
def judge_ppt(file_path):
@@ -166,15 +149,10 @@ def open_ppt(file_path):
return True
-# def make_button(window):
-
-
if __name__ == '__main__':
window = tkinter.Tk()
window.title("会议PPT选择")
window.geometry("200x100")
bt1 = tkinter.Button(window, text='打开文件', width=15, height=15, command=open_file)
bt1.pack()
- # show_text = tkinter.Text(window, height=2)
- # show_text.pack()
window.mainloop()
diff --git a/models/__pycache__/yolo.cpython-37.pyc b/models/__pycache__/yolo.cpython-37.pyc
index a1ffcca..cc66b6d 100644
Binary files a/models/__pycache__/yolo.cpython-37.pyc and b/models/__pycache__/yolo.cpython-37.pyc differ
diff --git a/models/yolo.py b/models/yolo.py
index 497a0e9..16d01ca 100644
--- a/models/yolo.py
+++ b/models/yolo.py
@@ -301,24 +301,25 @@ def parse_model(d, ch): # model_dict, input_channels(3)
if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml')
- parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
- parser.add_argument('--profile', action='store_true', help='profile model speed')
- opt = parser.parse_args()
- opt.cfg = check_yaml(opt.cfg) # check YAML
- print_args(FILE.stem, opt)
- set_logging()
- device = select_device(opt.device)
-
- # Create model
- model = Model(opt.cfg).to(device)
- model.train()
-
- # Profile
- if opt.profile:
- img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device)
- y = model(img, profile=True)
+ print("in yolo")
+ # parser = argparse.ArgumentParser()
+ # parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml')
+ # parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
+ # parser.add_argument('--profile', action='store_true', help='profile model speed')
+ # opt = parser.parse_args()
+ # opt.cfg = check_yaml(opt.cfg) # check YAML
+ # print_args(FILE.stem, opt)
+ # set_logging()
+ # device = select_device(opt.device)
+ #
+ # # Create model
+ # model = Model(opt.cfg).to(device)
+ # model.train()
+ #
+ # # Profile
+ # if opt.profile:
+ # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device)
+ # y = model(img, profile=True)
# Tensorboard (not working https://github.com/ultralytics/yolov5/issues/2898)
# from torch.utils.tensorboard import SummaryWriter
diff --git a/models/yolov5l.yaml b/models/yolov5l.yaml
deleted file mode 100644
index ce8a5de..0000000
--- a/models/yolov5l.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
-
-# Parameters
-nc: 80 # number of classes
-depth_multiple: 1.0 # model depth multiple
-width_multiple: 1.0 # layer channel multiple
-anchors:
- - [10,13, 16,30, 33,23] # P3/8
- - [30,61, 62,45, 59,119] # P4/16
- - [116,90, 156,198, 373,326] # P5/32
-
-# YOLOv5 v6.0 backbone
-backbone:
- # [from, number, module, args]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]],
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]],
- [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
- [-1, 9, C3, [512]],
- [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
- [-1, 3, C3, [1024]],
- [-1, 1, SPPF, [1024, 5]], # 9
- ]
-
-# YOLOv5 v6.0 head
-head:
- [[-1, 1, Conv, [512, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 6], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 13
-
- [-1, 1, Conv, [256, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 4], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 17 (P3/8-small)
-
- [-1, 1, Conv, [256, 3, 2]],
- [[-1, 14], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
-
- [-1, 1, Conv, [512, 3, 2]],
- [[-1, 10], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
-
- [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
- ]
diff --git a/models/yolov5m.yaml b/models/yolov5m.yaml
deleted file mode 100644
index ad13ab3..0000000
--- a/models/yolov5m.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
-
-# Parameters
-nc: 80 # number of classes
-depth_multiple: 0.67 # model depth multiple
-width_multiple: 0.75 # layer channel multiple
-anchors:
- - [10,13, 16,30, 33,23] # P3/8
- - [30,61, 62,45, 59,119] # P4/16
- - [116,90, 156,198, 373,326] # P5/32
-
-# YOLOv5 v6.0 backbone
-backbone:
- # [from, number, module, args]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]],
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]],
- [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
- [-1, 9, C3, [512]],
- [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
- [-1, 3, C3, [1024]],
- [-1, 1, SPPF, [1024, 5]], # 9
- ]
-
-# YOLOv5 v6.0 head
-head:
- [[-1, 1, Conv, [512, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 6], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 13
-
- [-1, 1, Conv, [256, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 4], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 17 (P3/8-small)
-
- [-1, 1, Conv, [256, 3, 2]],
- [[-1, 14], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
-
- [-1, 1, Conv, [512, 3, 2]],
- [[-1, 10], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
-
- [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
- ]
diff --git a/models/yolov5n.yaml b/models/yolov5n.yaml
deleted file mode 100644
index 8a28a40..0000000
--- a/models/yolov5n.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
-
-# Parameters
-nc: 80 # number of classes
-depth_multiple: 0.33 # model depth multiple
-width_multiple: 0.25 # layer channel multiple
-anchors:
- - [10,13, 16,30, 33,23] # P3/8
- - [30,61, 62,45, 59,119] # P4/16
- - [116,90, 156,198, 373,326] # P5/32
-
-# YOLOv5 v6.0 backbone
-backbone:
- # [from, number, module, args]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]],
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]],
- [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
- [-1, 9, C3, [512]],
- [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
- [-1, 3, C3, [1024]],
- [-1, 1, SPPF, [1024, 5]], # 9
- ]
-
-# YOLOv5 v6.0 head
-head:
- [[-1, 1, Conv, [512, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 6], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 13
-
- [-1, 1, Conv, [256, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 4], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 17 (P3/8-small)
-
- [-1, 1, Conv, [256, 3, 2]],
- [[-1, 14], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
-
- [-1, 1, Conv, [512, 3, 2]],
- [[-1, 10], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
-
- [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
- ]
diff --git a/models/yolov5x.yaml b/models/yolov5x.yaml
deleted file mode 100644
index f617a02..0000000
--- a/models/yolov5x.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
-
-# Parameters
-nc: 80 # number of classes
-depth_multiple: 1.33 # model depth multiple
-width_multiple: 1.25 # layer channel multiple
-anchors:
- - [10,13, 16,30, 33,23] # P3/8
- - [30,61, 62,45, 59,119] # P4/16
- - [116,90, 156,198, 373,326] # P5/32
-
-# YOLOv5 v6.0 backbone
-backbone:
- # [from, number, module, args]
- [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
- [-1, 3, C3, [128]],
- [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
- [-1, 6, C3, [256]],
- [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
- [-1, 9, C3, [512]],
- [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
- [-1, 3, C3, [1024]],
- [-1, 1, SPPF, [1024, 5]], # 9
- ]
-
-# YOLOv5 v6.0 head
-head:
- [[-1, 1, Conv, [512, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 6], 1, Concat, [1]], # cat backbone P4
- [-1, 3, C3, [512, False]], # 13
-
- [-1, 1, Conv, [256, 1, 1]],
- [-1, 1, nn.Upsample, [None, 2, 'nearest']],
- [[-1, 4], 1, Concat, [1]], # cat backbone P3
- [-1, 3, C3, [256, False]], # 17 (P3/8-small)
-
- [-1, 1, Conv, [256, 3, 2]],
- [[-1, 14], 1, Concat, [1]], # cat head P4
- [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
-
- [-1, 1, Conv, [512, 3, 2]],
- [[-1, 10], 1, Concat, [1]], # cat head P5
- [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
-
- [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
- ]
diff --git a/yolov5s.pt b/resource/yolov5s.pt
similarity index 100%
rename from yolov5s.pt
rename to resource/yolov5s.pt
diff --git a/runs/detect/exp/0.mp4 b/runs/detect/exp/0.mp4
deleted file mode 100644
index d976ef1..0000000
Binary files a/runs/detect/exp/0.mp4 and /dev/null differ
diff --git a/test.py b/test.py
deleted file mode 100644
index 1501c03..0000000
--- a/test.py
+++ /dev/null
@@ -1,165 +0,0 @@
-import cv2
-import mediapipe as mp
-import detect
-import numpy as np
-# !/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Time : 2021/04/08
-# @Author : Devil_Xiao
-# Purpose: This script is used to change the video_speed
-# You can choose to specify the fps,
-# or you can choose to change the multiple of the original playback speed
-
-import cv2
-from cv2 import VideoWriter, VideoWriter_fourcc
-import argparse
-
-
-def video_speed(video_root, out_root, fps=None, scale=1):
- """When fps and scale are specified at the same time, fps is the dominant"""
- # cap = cv2.VideoCapture(video_root)
- cap = cv2.VideoCapture(0)
- video_width = int(cap.get(3))
- video_height = int(cap.get(4))
- print(video_width)
- print(video_height)
- # fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
- # if fps:
- # videoWriter = cv2.VideoWriter(out_root, fourcc, fps, (video_width, video_height))
- # else:
- # fps = int(cap.get(cv2.CAP_PROP_FPS) * scale)
- # videoWriter = cv2.VideoWriter(out_root, fourcc, fps, (video_width, video_height))
- flag = cap.isOpened()
- mp_drawing = mp.solutions.drawing_utils
- mp_drawing_styles = mp.solutions.drawing_styles
- mp_hands = mp.solutions.hands
- mp_poses = mp.solutions.pose
- hands = mp_hands.Hands(
- static_image_mode=False,
- max_num_hands=2,
- min_detection_confidence=0.75,
- min_tracking_confidence=0.75)
- poses = mp_poses.Pose(
- min_detection_confidence=0.5,
- min_tracking_confidence=0.5)
-
- # yolov5 = detect.YOLOV5()
- # blank_image = np.zeros((1000, 1000, 3), np.uint8)
- # blank_image.fill(255)
- while True:
- ret, frame = cap.read()
- # blank_image = frame.copy()
- # blank_image.fill(255)
- # image = detect.run(image_input=frame)
- # result = yolov5.infer(image=frame)
- # print("")
-
- frame = cv2.flip(frame, 1)
- frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
- # frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
- results = hands.process(frame_rgb)
- # results = poses.process(image)
- # print("*********************************")
- # if results.pose_landmarks:
- # for
- # print(results.pose_landmarks.landmark[17])
- # mp_drawing.draw_landmarks(
- # blank_image,
- # results.pose_landmarks,
- # mp_poses.POSE_CONNECTIONS,
- # landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style())
- # if results.
- # print(results.multi_hand_landmarks)
- if results.multi_handedness:
- # if results.multi_handedness[0].classification[0].label == "Left":
- for hand_landmarks in results.multi_hand_landmarks:
- # 关键点可视化
- mp_drawing.draw_landmarks(
- frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
- # if results.multi_handedness[0].classification[0].label == "Right":
- # print(results.multi_handedness[0].classification[0])
- cv2.imshow('MediaPipe Hands', frame)
- # cv2.imshow('black_image', blank_image)
- # videoWriter.write(blank_image)
- # count = count - 1
- cv2.imwrite("picture3.jpg", frame)
- if cv2.waitKey(3000) & 0xFF == 27:
- break
- cap.release()
- # videoWriter.release()
- # while (flag):
- # flag, frame = cap.read()
- # videoWriter.write(frame)
- # videoWriter.release()
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--video_name', type=str, default=r'video.mp4', help='original video name')
- parser.add_argument('--result_name', type=str, default=r'result.mp4', help='result name')
- parser.add_argument('--fps', type=int, default=None, help='Specify the playback frame rate')
- parser.add_argument('--scale', type=float, default='0.5', help='Change the original video speed')
- opt = parser.parse_args()
- print(opt)
- video_speed(opt.video_name, opt.result_name, opt.fps, 2)
-
-# if __name__ == '__main__':
-# parser = argparse.ArgumentParser()
-# parser.add_argument('--video_name', type=str, default=r'video.mp4', help='original video name')
-# parser.add_argument('--result_name', type=str, default=r'result.mp4', help='result name')
-# parser.add_argument('--fps', type=int, default=None, help='Specify the playback frame rate')
-# parser.add_argument('--scale', type=float, default='0.5', help='Change the original video speed')
-# opt = parser.parse_args()
-# mp_drawing = mp.solutions.drawing_utils
-# mp_drawing_styles = mp.solutions.drawing_styles
-# mp_hands = mp.solutions.hands
-# mp_poses = mp.solutions.pose
-# hands = mp_hands.Hands(
-# static_image_mode=False,
-# max_num_hands=2,
-# min_detection_confidence=0.75,
-# min_tracking_confidence=0.75)
-# poses = mp_poses.Pose(
-# min_detection_confidence=0.5,
-# min_tracking_confidence=0.5)
-# cap = cv2.VideoCapture("D:\\Program Files\\JiJiDown\\Download\\Thank_you.mp4")
-# yolov5 = detect.YOLOV5()
-# blank_image = np.zeros((1000, 1000, 3), np.uint8)
-# blank_image.fill(255)
-# while True:
-# ret, frame = cap.read()
-# blank_image = np.zeros((1000, 1000, 3), np.uint8)
-# blank_image.fill(255)
-# # image = detect.run(image_input=frame)
-# # result = yolov5.infer(image=frame)
-# # print("")
-# # frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
-# # frame = cv2.flip(frame, 1)
-# image = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
-# # results = hands.process(image)
-# results = poses.process(image)
-# # print("*********************************")
-# # if results.pose_landmarks:
-# # for
-# # print(results.pose_landmarks.landmark[17])
-# mp_drawing.draw_landmarks(
-# blank_image,
-# results.pose_landmarks,
-# mp_poses.POSE_CONNECTIONS,
-# landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style())
-# # if results.
-# # print(results.multi_hand_landmarks)
-# # if results.multi_handedness:
-# # # if results.multi_handedness[0].classification[0].label == "Left":
-# # for hand_landmarks in results.multi_hand_landmarks:
-# # # 关键点可视化
-# # mp_drawing.draw_landmarks(
-# # frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
-# # if results.multi_handedness[0].classification[0].label == "Right":
-# # print(results.multi_handedness[0].classification[0])
-# cv2.imshow('MediaPipe Hands', frame)
-# cv2.imshow('black_image', blank_image)
-# # cv2.imwrite("picture3.jpg", frame)
-# if cv2.waitKey(1) & 0xFF == 27:
-# break
-# cap.release()
diff --git a/util.py b/util.py
index ff5bda0..306ae5a 100644
--- a/util.py
+++ b/util.py
@@ -27,7 +27,8 @@ class Util:
def get_distance(point1, point2):
return math.sqrt((point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2)
- def is_in_rectangle(target_point, rectangle):
+ def \
+ is_in_rectangle(target_point, rectangle):
if target_point[0] > rectangle[0] and target_point[0] < rectangle[2] and target_point[1] > rectangle[1] and \
target_point[1] < rectangle[3]:
return True