--- tags: openpose --- # 姿勢比對方法分享 ## 2021/3/03 ### 針對 兩份EXCEL 做姿勢比對,這兩份EXCEL為 影片的關節姿勢格式輸出檔 [關節數據true.xlsx](https://www.dropbox.com/scl/fi/7wn18bboq02cfcj1v7rqq/true.xlsx?dl=0&rlkey=mqvla6neoua87x3bzaqrp3p5i) [關節數據false.xlsx](https://www.dropbox.com/scl/fi/2lb17244847459glsz5o1/false.xlsx?dl=0&rlkey=rj2avi6dmdalh4k3thvgzqs2r) ### 大致流程:找到開始動作(去除預備動作)-> 比較姿勢(關節格式跟角度)->評分方式 ### (1) 利用Python 讀取 excel 讀取 excel 的套件有 | | xlrd | pandas | | -------- | -------- | -------- | | 讀取儲存格(cell) | xlrd | | | -------- | -------- | -------- | | 讀取欄 | xlrd | | | -------- | -------- | -------- | | 讀取行(列) | Text | Text | [python讀取excel檔案—xlrd](https://www.itread01.com/content/1547163381.html) [[Pandas教學]5個實用的Pandas讀取Excel檔案資料技巧](https://www.learncodewithmike.com/2020/12/read-excel-file-using-pandas.html) ### 讀取 關節數據true.xlsx,使用xlrd套件 列:橫,欄(行):直 [read-excel-true](https://repl.it/join/mxebapao-lilysally) ``` import xlrd # 以xlrd打開表格給excel filename1 = '關節數據true.xlsx' excel1 = xlrd.open_workbook(filename1) sheel_1 = excel1.sheet_by_index(0) # 指定要讀取第一個工作表,索引值由 0 開始標示 print('B1:',sheel_1.cell_value(0,1)) #列,欄(行) print('C1:',sheel_1.cell_value(0,2)) #列,欄(行) # 取得特定cell(儲存格) print('標題:',sheel_1.row_values(0)) # 獲取第一行(欄)的內容 返回一個list frame1 = sheel_1.col_values(0) print('Frame:',frame1) # 獲取第一列的內容 返回一個list ``` 顯示結果: ``` B1: 鼻(0) C1: 胸(1) 標題: ['Frame\\部位', '鼻(0)', '胸(1)', '右肩(2)', '右手肘(3)', '右手腕(4)', '左肩(5)', '左手肘(6)', '左手腕(7)', '骨盆中(8)', '右骨盆(9)', '右膝蓋(10)', '右腳踝(11)', '左骨盆(12)', '左膝蓋(13)', '左腳踝(14)', '右眼(15)', '左眼(16)', '右耳(17)', '左耳(18)', '左腳尖(19)', '左指頭(20)', '左腳跟(21)', '右腳尖(22)', '右指頭(23)', '右腳跟(24)'] Frame: ['Frame\\部位', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0, 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0, 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0, 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0, 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0, 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0, 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0, 200.0, 201.0, 202.0, 203.0, 204.0, 205.0, 206.0, 207.0, 208.0, 209.0, 210.0, 211.0, 212.0, 213.0, 214.0, 215.0, 216.0, 217.0, 218.0] //218筆資料 ``` ![](https://i.imgur.com/4icO96A.png) ### 讀取 關節數據false.xlsx [read-excel-false](https://repl.it/join/reyqhiag-lilysally) ``` import xlrd filename2 = '關節數據false.xlsx' excel2 = xlrd.open_workbook(filename2) sheel_2 = excel2.sheet_by_index(0) print('B1:',sheel_2.cell_value(0,1)) #列(行),欄 print('C1:',sheel_2.cell_value(0,2)) #列(行),欄 print('標題:',sheel_2.row_values(0)) # 獲取第一行(欄)的內容 返回一個list frame2 = sheel_2.col_values(0) print('Frame:',frame2) # 獲取第一列的內容 返回一個list ``` 顯示結果: ``` B1: 鼻(0) C1: 胸(1) 標題: ['Frame\\部位', '鼻(0)', '胸(1)', '右肩(2)', '右手肘(3)', '右手腕(4)', '左肩(5)', '左手肘(6)', '左手腕(7)', '骨盆中(8)', '右骨盆(9)', '右膝蓋(10)', '右腳踝(11)', '左骨盆(12)', '左膝蓋(13)', '左腳踝(14)', '右眼(15)', '左眼(16)', '右耳(17)', '左耳(18)', '左腳尖(19)', '左指頭(20)', '左腳跟(21)', '右腳尖(22)', '右指頭(23)', '右腳跟(24)'] Frame: ['Frame\\部位', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0, 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0, 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0, 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0, 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0, 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0, 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0, 200.0, 201.0, 202.0, 203.0, 204.0, 205.0, 206.0, 207.0] //207筆 ``` ![](https://i.imgur.com/HPFpN9G.png) ### 整合:讀取關節數據true.xlsx和關節數據false.xlsx [read-excel-true&false](https://repl.it/join/rzbjylkq-lilysally) ``` import xlrd filename1 = '關節數據true.xlsx' filename2 = '關節數據false.xlsx' excel1 = xlrd.open_workbook(filename1) sheel_1 = excel1.sheet_by_index(0) excel2 = xlrd.open_workbook(filename2) sheel_2 = excel2.sheet_by_index(0) frame1 = sheel_1.col_values(0) print('Frame:',frame1) frame2 = sheel_2.col_values(0) print('Frame:',frame2) ``` [read-excel-true&false-1](https://repl.it/join/vrveuoxw-lilysally/) ``` import xlrd #filename=[filename1,filename2] filename=['關節數據true.xlsx','關節數據false.xlsx'] excel1='' excel2='' sheel_1='' sheel_2='' frame1='' frame2='' excel=[excel1,excel2] sheel=[sheel_1,sheel_2] frame=[frame1,frame2] for i in range(0,2): excel[i]=xlrd.open_workbook(filename[i]) sheel[i] = excel[i].sheet_by_index(0) frame[i]= sheel[i].col_values(0) print(frame[i]) ``` 顯示資料: ``` ['Frame\\部位', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0, 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0, 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0, 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0, 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0, 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0, 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0, 200.0, 201.0, 202.0, 203.0, 204.0, 205.0, 206.0, 207.0, 208.0, 209.0, 210.0, 211.0, 212.0, 213.0, 214.0, 215.0, 216.0, 217.0, 218.0] ['Frame\\部位', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0, 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0, 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0, 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0, 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0, 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0, 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0, 200.0, 201.0, 202.0, 203.0, 204.0, 205.0, 206.0, 207.0] ``` ---- ### (2) 把excel的列數內容加入至list串列 ### 關節數據true.xlsx的每列數內容加至truelist串列,形成二維串列 [Column content of each column_true](https://repl.it/join/uruyfiqv-lilysally) 1.使用 len()算出 關節數據true.xlsx 的列數長度, ``` print(len(frame1)-1) #計算列數,扣1是因為標題 ``` 2.結合讀取整欄內容, ``` sheel_1.row_values(i) ``` 3.用迴圈印出 關節數據true.xlsx總列數的欄內容 在串列裡索引值從0開始,故'Frame\\部位'為(0,0),第0列第1欄 ``` for i in range(1,len(frame1)): # 讀取 'Frame\\部位' 的每列內容 print("Frame\\部位的第%d列內容"%i,frame1[i]) #讀取每欄的內容 print(sheel_1.row_values(i)) ``` 前3筆資料顯示如下: ``` Frame\部位的第1列內容 1.0 [1.0, '(252,267)89', '(257,337)96', '(211,337)90', '(177,413)90', '(141,463)97', '(302,337)95', '(327,413)86', '(353,464)85', '(257,474)88', '(222,473)87', '(222,579)97', '(217,670)95', '(297,473)88', '(292,579)92', '(297,665)93', '(237,262)90', '(257,262)97', '(222,267)88', '(267,262)85', '(302,700)83', '(317,695)80', '(282,675)76', '(222,705)91', '(202,705)88', '(217,680)82'] Frame\部位的第2列內容 2.0 [2.0, '(252,272)87', '(257,337)96', '(211,337)90', '(181,408)89', '(146,463)94', '(302,337)95', '(327,413)87', '(347,468)86', '(257,474)88', '(222,474)86', '(222,584)97', '(217,670)94', '(297,474)88', '(292,579)92', '(297,665)94', '(232,262)90', '(257,262)96', '(221,267)87', '(267,262)87', '(302,700)84', '(312,695)80', '(282,675)76', '(222,705)91', '(202,705)87', '(217,680)81'] Frame\部位的第3列內容 3.0 [3.0, '(252,272)87', '(257,337)96', '(211,337)90', '(181,408)89', '(156,464)90', '(302,337)96', '(327,418)89', '(343,474)88', '(257,474)88', '(222,474)87', '(222,584)97', '(217,670)94', '(297,473)88', '(292,579)92', '(297,665)93', '(232,262)89', '(257,262)96', '(221,267)86', '(267,262)87', '(302,700)83', '(312,695)80', '(282,670)76', '(222,705)91', '(202,705)86', '(217,680)81'] ``` 4.關節數據true.xlsx總列數的欄內容加至truelist串列裡,形成18X207的串列 串列的新增 : list1.append(參數1):參數可是元素,也是串列 list2.extend(參數2):參數只可以是串列,不能是元素 ``` truelist=[] for i in range(1,len(frame1)): # 讀取 'Frame\\部位' 的每列內容 print("Frame\\部位的第%d列內容"%i,frame1[i]) #讀取每欄的內容 print(sheel_1.row_values(i)) truelist.extend([sheel_1.row_values(i)]) print('truelist內容',truelist) ``` truelist內容,資料顯示如下: ``` [ [1.0, '(252,267)89', '(257,337)96', '(211,337)90', '(177,413)90', '(141,463)97', '(302,337)95', '(327,413)86', '(353,464)85', '(257,474)88', '(222,473)87', '(222,579)97', '(217,670)95', '(297,473)88', '(292,579)92', '(297,665)93', '(237,262)90', '(257,262)97', '(222,267)88', '(267,262)85', '(302,700)83', '(317,695)80', '(282,675)76', '(222,705)91', '(202,705)88', '(217,680)82'], [2.0, '(252,272)87', '(257,337)96', '(211,337)90', '(181,408)89', '(146,463)94', '(302,337)95', '(327,413)87', '(347,468)86', '(257,474)88', '(222,474)86', '(222,584)97', '(217,670)94', '(297,474)88', '(292,579)92', '(297,665)94', '(232,262)90', '(257,262)96', '(221,267)87', '(267,262)87', '(302,700)84', '(312,695)80', '(282,675)76', '(222,705)91', '(202,705)87', '(217,680)81'], [3.0, '(252,272)87', '(257,337)96', '(211,337)90', '(181,408)89', '(156,464)90', '(302,337)96', '(327,418)89', '(343,474)88', '(257,474)88', '(222,474)87', '(222,584)97', '(217,670)94', '(297,473)88', '(292,579)92', '(297,665)93', '(232,262)89', '(257,262)96', '(221,267)86', '(267,262)87', '(302,700)83', '(312,695)80', '(282,670)76', '(222,705)91', '(202,705)86', '(217,680)81'], [第4筆18個關節格式], . . . . . ] ``` ### 二維串列介紹 ![](https://i.imgur.com/rdiNSsz.png) ``` # 宣告一個二維串列 List = [[1, 2, 3], [4, 5, 6]] print(List) print(List[0]) print(List[1]) ``` 顯示結果: ``` [[1, 2, 3], [4, 5, 6]] [1, 2, 3] [4, 5, 6] ``` ``` print(List[0][0]) //1 print(List[0][1]) //2 print(List[0][2]) //3 print(List[1][0]) //4 print(List[1][1]) //5 print(List[1][2]) //6 ``` ---- ### 關節數據false.xlsx的每列數的欄內容加至falselist串列,形成二維串列 [Column content of each column_false](https://repl.it/join/abossolw-lilysally) 參照上面方法 ``` falselist=[] for j in range(1,len(frame2)): # 讀取 'Frame\\部位' 的每列內容 print("Frame\\部位的第%d列內容"%j,frame2[j]) #讀取每欄的內容 print(sheel_2.row_values(j)) falselist.extend([sheel_2.row_values(j)]) print('falselist內容',falselist) ``` falselist內容,資料顯示如下: ``` [ [1.0, '(267,287)81', '(267,343)93', '(222,343)90', '(181,292)88', '(176,192)90', '(317,342)88', '(348,272)86', '(348,187)88', '(262,514)85', '(232,514)81', '(237,630)83', '(252,736)88', '(302,514)89', '(297,630)90', '(297,736)92', '(257,267)85', '(292,267)83', '(242,297)63', '(302,292)49', '(292,776)86', '(302,771)90', '(292,741)79', '(252,776)91', '(227,766)85', '(257,741)83'], [2.0, '(277,282)78', '(267,343)94', '(222,343)90', '(176,287)88', '(171,202)85', '(322,342)87', '(353,272)83', '(363,196)82', '(262,519)84', '(227,519)82', '(237,630)82', '(252,736)88', '(302,519)88', '(297,630)89', '(297,740)92', '(262,267)84', '(297,267)81', '(242,297)59', '(307,292)30', '(292,776)85', '(302,771)90', '(292,741)80', '(252,776)91', '(227,766)85', '(257,741)83'], [3.0, '(282,277)76', '(267,342)95', '(217,338)91', '(161,267)82', '(146,191)83', '(317,338)87', '(353,287)83', '(378,211)89', '(262,514)85', '(227,519)82', '(237,630)83', '(252,740)88', '(302,514)88', '(297,630)89', '(297,740)92', '(262,267)84', '(297,262)80', '(247,292)65', '(307,287)22', '(292,776)86', '(302,771)89', '(292,741)79', '(257,776)92', '(227,766)85', '(257,741)83'], [第4筆18個關節格式], . . . . . ] ``` ### 整合 : 形成 truelist串列 跟 falselist串列 [Column content of each column_true&false](https://repl.it/join/bdgkznhp-lilysally) ``` import xlrd filename1 = '關節數據true.xlsx' filename2 = '關節數據false.xlsx' excel1 = xlrd.open_workbook(filename1) excel2 = xlrd.open_workbook(filename2) sheel_1 = excel1.sheet_by_index(0) sheel_2 = excel2.sheet_by_index(0) frame1 = sheel_1.col_values(0) frame2 = sheel_2.col_values(0) truelist=[] falselist=[] for i in range(1,len(frame1)): truelist.extend([sheel_1.row_values(i)]) print('truelist內容',truelist) for j in range(1,len(frame2)): falselist.extend([sheel_2.row_values(j)]) print('falselist內容',falselist) ``` [Column content of each column_true&false-1](https://repl.it/join/hbluxtov-lilysally) ---- ### (3) 姿勢比對 剔除預備動作 (因為frame不一樣): 1.關節格式 : 固定 falselist的frame(關節姿勢false 的frame)去對比 所有 truelist的frame(關節姿勢true 的frame),是否相等 ``` # 顯示 truelist的frame1.0 的17個關節格式 #truelist有218筆 print(comparelist[0][0]) print(comparelist[0][0][0]) //1.0 # 顯示 falselist的frame1.0 的17個關節格式 #falselist有207筆 print(comparelist[1][0]) print(comparelist[1][0][0]) //1.0 number=0 same=[] for o in range(0,len(comparelist[1])): for u in range(0,len(comparelist[0])): if (comparelist[1][o] == comparelist[0][u]): number+=1 same.append(comparelist[1][o]) else: number-=1 print(number) print(same) ``` => Bug:身高問題 調比例 2.是否有做到整體動作 3.角度比對 * 定義動作 * 比對前後frame(frame大-frame小)在可形成動作的關節角度變化 * 由於關節格式是採文字儲存在串列,故使用文字轉數字、'('分隔取出x跟y,做角度計算 4.做動作時間(加速度) ### (4)評分方式 結合給予姿勢比對權重