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 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 a1ffcca7fbd1e12e03cf3f97ea6979d5bda7431d..cc66b6dc553b6060a440dbb4d16659aa1486580d 100644
GIT binary patch
delta 1264
zcmZ9LO>7%Q6vsXG+KFvU(;7F}v>|q!Hk&wh68D2j9H1_#TBsV5@R5m>)p~a$yYYT>
zc3qlKl1fzzQV)o}R-}TeqG~x6QM6T|J){NB2q8|akWhu-%7Ft{=8Z)_`0$&V_ul_`
zKK^^Der_RkFqKM#`0vKewffBuQdzR^i`^x%Wx^QMx1A#-q=#oha@yY>PQ(fI^U1#?
zqCmFiHA2Dex!1eMr2$!F<9w6}+tV59{_|UZCPam7`c=|~rSy?looAQ}57I-#^M6fi
zgts}IIk1yTmQym{>5Kdx5O^kb6w#ggDIwf#fx8hoLr*G}~Eb+px`k#ES^=hbM5h#1VuohrNrd
ziyU${>&H1BjXjHa55C)xCl~xbcIYG~q$@DjcYs_3=o@+(PZ*Fo%V4QM9%m>0AN%5D
zSd@!a*Rd|98=k5)SOrUVVuZ}H&PE{CKN7oz@lWBCu{0d*{~^1%MX}?c%e3`&%W#$Bg`LDP@-pXD_-5ZEE5k%q<2=$P#RHs8e{%$
z8cg*Jwg8VtGHdT(s)hKRgT@axY}c#V)~O(I(DuBRVHw&I-6F#O2}EY5rl`a*$?gc<
zvF2%1P3SZ_X=`nl#%s)WU5wGxzrxzg6b;v^RH{{Hr)jhntzsjXD~)B*mkgcVvF{n2
zp_?h(C_R^SaVh+J6@Dunnzs2m2x}8eBsMU69z#UsPFHwloQ6$>eT<2#2=sw0v2So*
zMbr?&wZh9Lygk~?nmibE|8uD;T}`Wh*>2f#86K9iWF3Ag%X_IbdE}Lsf-Xm8hUK||
zG=2Q|EL%XOy>@v
qL-@WjSQ6$F@0Y`lv18(M=v)lt5hk`6by(B#;QH7AnSgJ{_Wlitg-YK5
delta 1757
zcmYL}e{54#6vunpx2`Q4Ki2)AgR!n1V`Xi(?iWl%gaJwf888EE#>Z>#-PZcrSI&Da
zv{5!#h@ycgH%6jFI}?l=FE$3qFCT7-lKH!gRANhxsW^*g`e_qupnlp+TP`ZZ
zVOv^h8(m8S7hTKqcDjzPryaF-^>TBaplIO1l9wcY0cLG0nPu+sSoIlSP*^mxt$Yc1a@Qfgp}?8PJJ%o(I-nU;Dp-=H^
z9b@DYzthpX7FQ!k5?WAdqYFo7wR3})Y_{cgsy9&Qrp(e(bI^~H4z!R-s1?EwclNp8
zLi^i%vGd2kz4Gj>5cOGu7IbC;;|sx_l^N_
z_T9@O_?ul<+?P>vj+20&WcjhsyS3#o?hEfGH~GPEj6BYt4!0lsLh2%G;3&$EA&w)u
z5sx5>h*O9K#971zgo$_`@d@H{1nx21L`?BN!|i06`?@!g>FQwj4OcUjcA?CGkrgBd
zFQe)T|7TN@RJhuETz1B%z2_x&L^53`q%%Yu4$~YR^>h>C`f+@V?V3;P_MC1Q~<3}ch
zb9_iB<3p2&Mcw!i=Hb`+1_Ic7fSn3E5oZuvBn1DXZ|jNzPVFAO$`jGuV<*w$ObvqV
z_zJzxpowU*n^oyaOgXbEypE2m2<*&=0=M~l(Y3_jUq{pP1_pTk+rM&MES8#?EjN@5
z-6)Qj@sgI+%Rbq5Ot;4omt6pM-HcYyEuqXYJzw_3Vw4rrDF%3y<&CKV)q*ukG?@FaG1&$B2M_#-ss;j#v6;}!I(+wO!!R80H#_{U}gWZF=*EiH1mwn
zh*P+=l$ADefT2)9j7X#xWLHeedk1fa$PQ7js?_sFw1D0nua
zA#JK!QA_JuQf{~_ot=e;rG~!~50m};+xSSkhcuDZ^6`)c`M8PCCC4rg=^_6DJ{$F#
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 d976ef1ee19101ed818d6c952510bfc0333893f5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 456471
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 |