Best JavaScript code snippet using puppeteer
testData.js
Source:testData.js
1export const data = [2 {3 "Timestamp": 0,4 "Person": {5 "Index": 0,6 "BoundingBox": {7 "Width": 0.22812500596046448,8 "Height": 0.5902777910232544,9 "Left": 0.4828124940395355,10 "Top": 0.312511 },12 "Face": {13 "BoundingBox": {14 "Width": 0.07848067581653595,15 "Height": 0.21117782592773438,16 "Left": 0.36027926206588745,17 "Top": 0.2338640838861465518 },19 "Landmarks": [20 {21 "Type": "eyeLeft",22 "X": 0.391849547624588,23 "Y": 0.3107373714447021524 },25 {26 "Type": "eyeRight",27 "X": 0.4246918261051178,28 "Y": 0.3218317627906799329 },30 {31 "Type": "mouthLeft",32 "X": 0.3892572522163391,33 "Y": 0.3816980123519897534 },35 {36 "Type": "mouthRight",37 "X": 0.41605663299560547,38 "Y": 0.390793144702911439 },40 {41 "Type": "nose",42 "X": 0.40989601612091064,43 "Y": 0.345288902521133444 }45 ],46 "Pose": {47 "Roll": 11.237049102783203,48 "Yaw": 6.24450159072876,49 "Pitch": 16.75063323974609450 },51 "Quality": {52 "Brightness": 81.8662338256836,53 "Sharpness": 26.177368164062554 },55 "Confidence": 99.998512268066456 }57 }58 },59 {60 "Timestamp": 41,61 "Person": {62 "Index": 0,63 "BoundingBox": {64 "Width": 0.22812500596046448,65 "Height": 0.5902777910232544,66 "Left": 0.4828124940395355,67 "Top": 0.312568 }69 }70 },71 {72 "Timestamp": 125,73 "Person": {74 "Index": 0,75 "BoundingBox": {76 "Width": 0.25703126192092896,77 "Height": 0.5861111283302307,78 "Left": 0.45625001192092896,79 "Top": 0.3208333253860473680 }81 }82 },83 {84 "Timestamp": 166,85 "Person": {86 "Index": 0,87 "BoundingBox": {88 "Width": 0.24687500298023224,89 "Height": 0.5791666507720947,90 "Left": 0.46171873807907104,91 "Top": 0.322222232818603592 },93 "Face": {94 "BoundingBox": {95 "Width": 0.08363743126392365,96 "Height": 0.2203662246465683,97 "Left": 0.3511807918548584,98 "Top": 0.22952078282833199 },100 "Landmarks": [101 {102 "Type": "eyeLeft",103 "X": 0.38803714513778687,104 "Y": 0.3060420751571655105 },106 {107 "Type": "eyeRight",108 "X": 0.4213014543056488,109 "Y": 0.322030633687973110 },111 {112 "Type": "mouthLeft",113 "X": 0.381914347410202,114 "Y": 0.38014984130859375115 },116 {117 "Type": "mouthRight",118 "X": 0.4090389609336853,119 "Y": 0.39316853880882263120 },121 {122 "Type": "nose",123 "X": 0.4063012897968292,124 "Y": 0.34561383724212646125 }126 ],127 "Pose": {128 "Roll": 17.844255447387695,129 "Yaw": 12.55603313446045,130 "Pitch": 14.712808609008789131 },132 "Quality": {133 "Brightness": 80.5096664428711,134 "Sharpness": 26.1773681640625135 },136 "Confidence": 99.99952697753906137 }138 }139 },140 {141 "Timestamp": 250,142 "Person": {143 "Index": 0,144 "BoundingBox": {145 "Width": 0.25468748807907104,146 "Height": 0.574999988079071,147 "Left": 0.45625001192092896,148 "Top": 0.32777777314186096149 }150 }151 },152 {153 "Timestamp": 291,154 "Person": {155 "Index": 0,156 "BoundingBox": {157 "Width": 0.23593750596046448,158 "Height": 0.5763888955116272,159 "Left": 0.4671874940395355,160 "Top": 0.3263888955116272161 }162 }163 },164 {165 "Timestamp": 375,166 "Person": {167 "Index": 0,168 "BoundingBox": {169 "Width": 0.21484375,170 "Height": 0.5805555582046509,171 "Left": 0.48906248807907104,172 "Top": 0.32083332538604736173 },174 "Face": {175 "BoundingBox": {176 "Width": 0.08069853484630585,177 "Height": 0.2306104600429535,178 "Left": 0.34661227464675903,179 "Top": 0.21330039203166962180 },181 "Landmarks": [182 {183 "Type": "eyeLeft",184 "X": 0.3799102306365967,185 "Y": 0.28600412607192993186 },187 {188 "Type": "eyeRight",189 "X": 0.41552284359931946,190 "Y": 0.2962469756603241191 },192 {193 "Type": "mouthLeft",194 "X": 0.3774401843547821,195 "Y": 0.36601683497428894196 },197 {198 "Type": "mouthRight",199 "X": 0.40650054812431335,200 "Y": 0.37438100576400757201 },202 {203 "Type": "nose",204 "X": 0.400497168302536,205 "Y": 0.3252839744091034206 }207 ],208 "Pose": {209 "Roll": 11.584043502807617,210 "Yaw": 14.83158016204834,211 "Pitch": 13.293842315673828212 },213 "Quality": {214 "Brightness": 77.96678924560547,215 "Sharpness": 26.1773681640625216 },217 "Confidence": 99.99968719482422218 }219 }220 },221 {222 "Timestamp": 458,223 "Person": {224 "Index": 0,225 "BoundingBox": {226 "Width": 0.21171875298023224,227 "Height": 0.5916666388511658,228 "Left": 0.4906249940395355,229 "Top": 0.3194444477558136230 }231 }232 },233 {234 "Timestamp": 500,235 "Person": {236 "Index": 0,237 "BoundingBox": {238 "Width": 0.22031250596046448,239 "Height": 0.5833333134651184,240 "Left": 0.48750001192092896,241 "Top": 0.3236111104488373242 }243 }244 },245 {246 "Timestamp": 583,247 "Person": {248 "Index": 0,249 "BoundingBox": {250 "Width": 0.21640625596046448,251 "Height": 0.5930555462837219,252 "Left": 0.4898437559604645,253 "Top": 0.3125254 },255 "Face": {256 "BoundingBox": {257 "Width": 0.08108262717723846,258 "Height": 0.23958054184913635,259 "Left": 0.34584957361221313,260 "Top": 0.20403793454170227261 },262 "Landmarks": [263 {264 "Type": "eyeLeft",265 "X": 0.3790324032306671,266 "Y": 0.279778391122818267 },268 {269 "Type": "eyeRight",270 "X": 0.4150379002094269,271 "Y": 0.28851598501205444272 },273 {274 "Type": "mouthLeft",275 "X": 0.37760844826698303,276 "Y": 0.36290979385375977277 },278 {279 "Type": "mouthRight",280 "X": 0.4069131314754486,281 "Y": 0.37004783749580383282 },283 {284 "Type": "nose",285 "X": 0.40024712681770325,286 "Y": 0.3194337785243988287 }288 ],289 "Pose": {290 "Roll": 9.833709716796875,291 "Yaw": 27.497791290283203,292 "Pitch": 11.225396156311035293 },294 "Quality": {295 "Brightness": 78.163818359375,296 "Sharpness": 26.1773681640625297 },298 "Confidence": 99.99945068359375299 }300 }301 },302 {303 "Timestamp": 625,304 "Person": {305 "Index": 0,306 "BoundingBox": {307 "Width": 0.22578124701976776,308 "Height": 0.6069444417953491,309 "Left": 0.48359376192092896,310 "Top": 0.3055555522441864311 }312 }313 },314 {315 "Timestamp": 709,316 "Person": {317 "Index": 0,318 "BoundingBox": {319 "Width": 0.24296875298023224,320 "Height": 0.6013888716697693,321 "Left": 0.46484375,322 "Top": 0.3097222149372101323 }324 }325 },326 {327 "Timestamp": 792,328 "Person": {329 "Index": 0,330 "BoundingBox": {331 "Width": 0.23671874403953552,332 "Height": 0.6097221970558167,333 "Left": 0.4703125059604645,334 "Top": 0.30694442987442017335 },336 "Face": {337 "BoundingBox": {338 "Width": 0.08293142169713974,339 "Height": 0.2436903864145279,340 "Left": 0.3432880938053131,341 "Top": 0.19622355699539185342 },343 "Landmarks": [344 {345 "Type": "eyeLeft",346 "X": 0.3763734698295593,347 "Y": 0.27468356490135193348 },349 {350 "Type": "eyeRight",351 "X": 0.4123864769935608,352 "Y": 0.28310373425483704353 },354 {355 "Type": "mouthLeft",356 "X": 0.3748966157436371,357 "Y": 0.35721197724342346358 },359 {360 "Type": "mouthRight",361 "X": 0.4042122960090637,362 "Y": 0.36411139369010925363 },364 {365 "Type": "nose",366 "X": 0.39667901396751404,367 "Y": 0.3136891722679138368 }369 ],370 "Pose": {371 "Roll": 6.240635395050049,372 "Yaw": 34.30862808227539,373 "Pitch": -1.1065688133239746374 },375 "Quality": {376 "Brightness": 77.98373413085938,377 "Sharpness": 26.1773681640625378 },379 "Confidence": 99.99960327148438380 }381 }382 },383 {384 "Timestamp": 834,385 "Person": {386 "Index": 0,387 "BoundingBox": {388 "Width": 0.2421875,389 "Height": 0.612500011920929,390 "Left": 0.4632812440395355,391 "Top": 0.3097222149372101392 }393 }394 },395 {396 "Timestamp": 917,397 "Person": {398 "Index": 0,399 "BoundingBox": {400 "Width": 0.20624999701976776,401 "Height": 0.6138888597488403,402 "Left": 0.504687488079071,403 "Top": 0.3055555522441864404 }405 }406 },407 {408 "Timestamp": 959,409 "Person": {410 "Index": 0,411 "BoundingBox": {412 "Width": 0.21328124403953552,413 "Height": 0.6152777671813965,414 "Left": 0.504687488079071,415 "Top": 0.29722222685813904416 },417 "Face": {418 "BoundingBox": {419 "Width": 0.08161983639001846,420 "Height": 0.24702809751033783,421 "Left": 0.3477303981781006,422 "Top": 0.19652709364891052423 },424 "Landmarks": [425 {426 "Type": "eyeLeft",427 "X": 0.37849071621894836,428 "Y": 0.28015613555908203429 },430 {431 "Type": "eyeRight",432 "X": 0.41534727811813354,433 "Y": 0.2817624807357788434 },435 {436 "Type": "mouthLeft",437 "X": 0.3823695480823517,438 "Y": 0.3633377254009247439 },440 {441 "Type": "mouthRight",442 "X": 0.4123409688472748,443 "Y": 0.3645654022693634444 },445 {446 "Type": "nose",447 "X": 0.4036851227283478,448 "Y": 0.313732385635376449 }450 ],451 "Pose": {452 "Roll": 6.387585163116455,453 "Yaw": 27.272846221923828,454 "Pitch": 10.107118606567383455 },456 "Quality": {457 "Brightness": 76.9942626953125,458 "Sharpness": 26.1773681640625459 },460 "Confidence": 99.99970245361328461 }462 }463 },464 {465 "Timestamp": 1042,466 "Person": {467 "Index": 0,468 "BoundingBox": {469 "Width": 0.21796874701976776,470 "Height": 0.6166666746139526,471 "Left": 0.4945312440395355,472 "Top": 0.2958333194255829473 }474 }475 },476 {477 "Timestamp": 1126,478 "Person": {479 "Index": 0,480 "BoundingBox": {481 "Width": 0.21484375,482 "Height": 0.6152777671813965,483 "Left": 0.4976562559604645,484 "Top": 0.29027777910232544485 }486 }487 },488 {489 "Timestamp": 1167,490 "Person": {491 "Index": 0,492 "BoundingBox": {493 "Width": 0.21484375,494 "Height": 0.6236110925674438,495 "Left": 0.49609375,496 "Top": 0.28611111640930176497 },498 "Face": {499 "BoundingBox": {500 "Width": 0.0785977840423584,501 "Height": 0.2490559071302414,502 "Left": 0.3568763732910156,503 "Top": 0.2044225037097931504 },505 "Landmarks": [506 {507 "Type": "eyeLeft",508 "X": 0.38236141204833984,509 "Y": 0.2866040766239166510 },511 {512 "Type": "eyeRight",513 "X": 0.4202185869216919,514 "Y": 0.2867260277271271515 },516 {517 "Type": "mouthLeft",518 "X": 0.38781827688217163,519 "Y": 0.3702146112918854520 },521 {522 "Type": "mouthRight",523 "X": 0.4186538755893707,524 "Y": 0.37023457884788513525 },526 {527 "Type": "nose",528 "X": 0.40911614894866943,529 "Y": 0.3194780945777893530 }531 ],532 "Pose": {533 "Roll": -0.7278944253921509,534 "Yaw": 4.96051549911499,535 "Pitch": 7.596441745758057536 },537 "Quality": {538 "Brightness": 77.01812744140625,539 "Sharpness": 32.20803451538086540 },541 "Confidence": 99.99932861328125542 }543 }544 },545 {546 "Timestamp": 1251,547 "Person": {548 "Index": 0,549 "BoundingBox": {550 "Width": 0.22734375298023224,551 "Height": 0.6138888597488403,552 "Left": 0.484375,553 "Top": 0.2874999940395355554 }555 }556 },557 {558 "Timestamp": 1292,559 "Person": {560 "Index": 0,561 "BoundingBox": {562 "Width": 0.21015624701976776,563 "Height": 0.6180555820465088,564 "Left": 0.5023437738418579,565 "Top": 0.2888889014720917566 }567 }568 },569 {570 "Timestamp": 1376,571 "Person": {572 "Index": 0,573 "BoundingBox": {574 "Width": 0.18984374403953552,575 "Height": 0.6236110925674438,576 "Left": 0.5179687738418579,577 "Top": 0.2777777910232544578 },579 "Face": {580 "BoundingBox": {581 "Width": 0.08061590045690536,582 "Height": 0.2473413199186325,583 "Left": 0.35916954278945923,584 "Top": 0.2002316415309906585 },586 "Landmarks": [587 {588 "Type": "eyeLeft",589 "X": 0.3881816267967224,590 "Y": 0.2794070541858673591 },592 {593 "Type": "eyeRight",594 "X": 0.425238698720932,595 "Y": 0.28323930501937866596 },597 {598 "Type": "mouthLeft",599 "X": 0.39011824131011963,600 "Y": 0.363121896982193601 },602 {603 "Type": "mouthRight",604 "X": 0.4202994108200073,605 "Y": 0.3659951388835907606 },607 {608 "Type": "nose",609 "X": 0.41487154364585876,610 "Y": 0.3165953755378723611 }612 ],613 "Pose": {614 "Roll": 4.99280309677124,615 "Yaw": 15.331153869628906,616 "Pitch": 12.615163803100586617 },618 "Quality": {619 "Brightness": 78.53553771972656,620 "Sharpness": 26.1773681640625621 },622 "Confidence": 99.9989013671875623 }624 }625 },626 {627 "Timestamp": 1459,628 "Person": {629 "Index": 0,630 "BoundingBox": {631 "Width": 0.21640625596046448,632 "Height": 0.6277777552604675,633 "Left": 0.49531251192092896,634 "Top": 0.2819444537162781635 }636 }637 },638 {639 "Timestamp": 1501,640 "Person": {641 "Index": 0,642 "BoundingBox": {643 "Width": 0.5218750238418579,644 "Height": 0.8027777671813965,645 "Left": 0.23359374701976776,646 "Top": 0.18333333730697632647 }648 }649 },650 {651 "Timestamp": 1584,652 "Person": {653 "Index": 0,654 "BoundingBox": {655 "Width": 0.3539062440395355,656 "Height": 0.7166666388511658,657 "Left": 0.3359375,658 "Top": 0.2361111044883728659 },660 "Face": {661 "BoundingBox": {662 "Width": 0.0795658603310585,663 "Height": 0.24075807631015778,664 "Left": 0.35698023438453674,665 "Top": 0.20305106043815613666 },667 "Landmarks": [668 {669 "Type": "eyeLeft",670 "X": 0.38791611790657043,671 "Y": 0.2794599235057831672 },673 {674 "Type": "eyeRight",675 "X": 0.42152515053749084,676 "Y": 0.2838071584701538677 },678 {679 "Type": "mouthLeft",680 "X": 0.38980865478515625,681 "Y": 0.3590952455997467682 },683 {684 "Type": "mouthRight",685 "X": 0.4170812964439392,686 "Y": 0.36269739270210266687 },688 {689 "Type": "nose",690 "X": 0.40974023938179016,691 "Y": 0.31536319851875305692 }693 ],694 "Pose": {695 "Roll": 8.424635887145996,696 "Yaw": 29.613977432250977,697 "Pitch": 9.131104469299316698 },699 "Quality": {700 "Brightness": 79.31598663330078,701 "Sharpness": 26.1773681640625702 },703 "Confidence": 99.99874877929688704 }705 }706 },707 {708 "Timestamp": 1626,709 "Person": {710 "Index": 0,711 "BoundingBox": {712 "Width": 0.34296876192092896,713 "Height": 0.7083333134651184,714 "Left": 0.34062498807907104,715 "Top": 0.24444444477558136716 }717 }718 },719 {720 "Timestamp": 1710,721 "Person": {722 "Index": 0,723 "BoundingBox": {724 "Width": 0.22265625,725 "Height": 0.6347222328186035,726 "Left": 0.48906248807907104,727 "Top": 0.28333333134651184728 }729 }730 },731 {732 "Timestamp": 1793,733 "Person": {734 "Index": 0,735 "BoundingBox": {736 "Width": 0.22265625,737 "Height": 0.6236110925674438,738 "Left": 0.48750001192092896,739 "Top": 0.27916666865348816740 },741 "Face": {742 "BoundingBox": {743 "Width": 0.07961773872375488,744 "Height": 0.24210026860237122,745 "Left": 0.3544538915157318,746 "Top": 0.1963040679693222747 },748 "Landmarks": [749 {750 "Type": "eyeLeft",751 "X": 0.38389164209365845,752 "Y": 0.2758004069328308753 },754 {755 "Type": "eyeRight",756 "X": 0.41916027665138245,757 "Y": 0.27740857005119324758 },759 {760 "Type": "mouthLeft",761 "X": 0.3874056041240692,762 "Y": 0.35559943318367004763 },764 {765 "Type": "mouthRight",766 "X": 0.4160926640033722,767 "Y": 0.3571118712425232768 },769 {770 "Type": "nose",771 "X": 0.4037065804004669,772 "Y": 0.3070984184741974773 }774 ],775 "Pose": {776 "Roll": 2.4874989986419678,777 "Yaw": 17.51691436767578,778 "Pitch": 15.560482025146484779 },780 "Quality": {781 "Brightness": 80.00030517578125,782 "Sharpness": 26.1773681640625783 },784 "Confidence": 99.99911499023438785 }786 }787 },788 {789 "Timestamp": 1835,790 "Person": {791 "Index": 0,792 "BoundingBox": {793 "Width": 0.22968749701976776,794 "Height": 0.6263889074325562,795 "Left": 0.47968751192092896,796 "Top": 0.28333333134651184797 }798 }799 },800 {801 "Timestamp": 1918,802 "Person": {803 "Index": 0,804 "BoundingBox": {805 "Width": 0.23671874403953552,806 "Height": 0.6263889074325562,807 "Left": 0.4789062440395355,808 "Top": 0.2888889014720917809 }810 }811 },812 {813 "Timestamp": 1960,814 "Person": {815 "Index": 0,816 "BoundingBox": {817 "Width": 0.23906250298023224,818 "Height": 0.6319444179534912,819 "Left": 0.4789062440395355,820 "Top": 0.2888889014720917821 },822 "Face": {823 "BoundingBox": {824 "Width": 0.07839222252368927,825 "Height": 0.24041150510311127,826 "Left": 0.3604711890220642,827 "Top": 0.20400899648666382828 },829 "Landmarks": [830 {831 "Type": "eyeLeft",832 "X": 0.38924193382263184,833 "Y": 0.2820438742637634834 },835 {836 "Type": "eyeRight",837 "X": 0.4250618517398834,838 "Y": 0.28647398948669434839 },840 {841 "Type": "mouthLeft",842 "X": 0.3913053572177887,843 "Y": 0.36343491077423096844 },845 {846 "Type": "mouthRight",847 "X": 0.420427143573761,848 "Y": 0.36694765090942383849 },850 {851 "Type": "nose",852 "X": 0.41358810663223267,853 "Y": 0.316289484500885854 }855 ],856 "Pose": {857 "Roll": 9.079399108886719,858 "Yaw": 28.617406845092773,859 "Pitch": 11.042881965637207860 },861 "Quality": {862 "Brightness": 79.27870178222656,863 "Sharpness": 26.1773681640625864 },865 "Confidence": 99.99788665771484866 }867 }868 },869 {870 "Timestamp": 2043,871 "Person": {872 "Index": 0,873 "BoundingBox": {874 "Width": 0.23281249403953552,875 "Height": 0.6333333253860474,876 "Left": 0.48046875,877 "Top": 0.29027777910232544878 }879 }880 },881 {882 "Timestamp": 2127,883 "Person": {884 "Index": 0,885 "BoundingBox": {886 "Width": 0.23984375596046448,887 "Height": 0.6277777552604675,888 "Left": 0.47265625,889 "Top": 0.28333333134651184890 }891 }892 },893 {894 "Timestamp": 2168,895 "Person": {896 "Index": 0,897 "BoundingBox": {898 "Width": 0.23515625298023224,899 "Height": 0.6277777552604675,900 "Left": 0.48124998807907104,901 "Top": 0.2847222089767456902 },903 "Face": {904 "BoundingBox": {905 "Width": 0.08201384544372559,906 "Height": 0.24789081513881683,907 "Left": 0.3536929190158844,908 "Top": 0.20688705146312714909 },910 "Landmarks": [911 {912 "Type": "eyeLeft",913 "X": 0.3855053782463074,914 "Y": 0.28480958938598633915 },916 {917 "Type": "eyeRight",918 "X": 0.4216727316379547,919 "Y": 0.28961697220802307920 },921 {922 "Type": "mouthLeft",923 "X": 0.3866890072822571,924 "Y": 0.36690059304237366925 },926 {927 "Type": "mouthRight",928 "X": 0.41612347960472107,929 "Y": 0.3707721531391144930 },931 {932 "Type": "nose",933 "X": 0.4087027609348297,934 "Y": 0.3197225034236908935 }936 ],937 "Pose": {938 "Roll": 9.268260955810547,939 "Yaw": 28.214773178100586,940 "Pitch": 11.393035888671875941 },942 "Quality": {943 "Brightness": 77.8455581665039,944 "Sharpness": 26.1773681640625945 },946 "Confidence": 99.9995346069336947 }948 }949 },950 {951 "Timestamp": 2252,952 "Person": {953 "Index": 0,954 "BoundingBox": {955 "Width": 0.23359374701976776,956 "Height": 0.6263889074325562,957 "Left": 0.47265625,958 "Top": 0.28611111640930176959 }960 }961 },962 {963 "Timestamp": 2293,964 "Person": {965 "Index": 0,966 "BoundingBox": {967 "Width": 0.22734375298023224,968 "Height": 0.6236110925674438,969 "Left": 0.47343748807907104,970 "Top": 0.2874999940395355971 }972 }973 },974 {975 "Timestamp": 2377,976 "Person": {977 "Index": 0,978 "BoundingBox": {979 "Width": 0.23828125,980 "Height": 0.6263889074325562,981 "Left": 0.4554687440395355,982 "Top": 0.2847222089767456983 },984 "Face": {985 "BoundingBox": {986 "Width": 0.08266077190637589,987 "Height": 0.2417086660861969,988 "Left": 0.3433450162410736,989 "Top": 0.21395662426948547990 },991 "Landmarks": [992 {993 "Type": "eyeLeft",994 "X": 0.3723505735397339,995 "Y": 0.28681135177612305996 },997 {998 "Type": "eyeRight",999 "X": 0.41058149933815,1000 "Y": 0.29231983423233031001 },1002 {1003 "Type": "mouthLeft",1004 "X": 0.3725414574146271,1005 "Y": 0.371406316757202151006 },1007 {1008 "Type": "mouthRight",1009 "X": 0.40371543169021606,1010 "Y": 0.375864028930664061011 },1012 {1013 "Type": "nose",1014 "X": 0.3937692940235138,1015 "Y": 0.32149562239646911016 }1017 ],1018 "Pose": {1019 "Roll": 6.0671796798706055,1020 "Yaw": 3.791238784790039,1021 "Pitch": 17.3062839508056641022 },1023 "Quality": {1024 "Brightness": 78.29988098144531,1025 "Sharpness": 20.9273109436035161026 },1027 "Confidence": 99.999557495117191028 }1029 }1030 },1031 {1032 "Timestamp": 2460,1033 "Person": {1034 "Index": 0,1035 "BoundingBox": {1036 "Width": 0.22734375298023224,1037 "Height": 0.6347222328186035,1038 "Left": 0.46406251192092896,1039 "Top": 0.29444444179534911040 }1041 }1042 },1043 {1044 "Timestamp": 2502,1045 "Person": {1046 "Index": 0,1047 "BoundingBox": {1048 "Width": 0.22187499701976776,1049 "Height": 0.6416666507720947,1050 "Left": 0.4671874940395355,1051 "Top": 0.290277779102325441052 }1053 }1054 },1055 {1056 "Timestamp": 2585,1057 "Person": {1058 "Index": 0,1059 "BoundingBox": {1060 "Width": 0.22031250596046448,1061 "Height": 0.644444465637207,1062 "Left": 0.46875,1063 "Top": 0.28749999403953551064 },1065 "Face": {1066 "BoundingBox": {1067 "Width": 0.08399105072021484,1068 "Height": 0.24006211757659912,1069 "Left": 0.3403841555118561,1070 "Top": 0.220402270555496221071 },1072 "Landmarks": [1073 {1074 "Type": "eyeLeft",1075 "X": 0.376435786485672,1076 "Y": 0.29862242937088011077 },1078 {1079 "Type": "eyeRight",1080 "X": 0.4123991131782532,1081 "Y": 0.304133504629135131082 },1083 {1084 "Type": "mouthLeft",1085 "X": 0.3779226243495941,1086 "Y": 0.38062763214111331087 },1088 {1089 "Type": "mouthRight",1090 "X": 0.40716353058815,1091 "Y": 0.38513737916946411092 },1093 {1094 "Type": "nose",1095 "X": 0.39997026324272156,1096 "Y": 0.332929462194442751097 }1098 ],1099 "Pose": {1100 "Roll": 7.904014587402344,1101 "Yaw": 31.511451721191406,1102 "Pitch": 3.0727980136871341103 },1104 "Quality": {1105 "Brightness": 79.49468231201172,1106 "Sharpness": 26.17736816406251107 },1108 "Confidence": 99.999427795410161109 }1110 }1111 },1112 {1113 "Timestamp": 2627,1114 "Person": {1115 "Index": 0,1116 "BoundingBox": {1117 "Width": 0.21718749403953552,1118 "Height": 0.644444465637207,1119 "Left": 0.46875,1120 "Top": 0.28888890147209171121 }1122 }1123 },1124 {1125 "Timestamp": 2711,1126 "Person": {1127 "Index": 0,1128 "BoundingBox": {1129 "Width": 0.21953125298023224,1130 "Height": 0.6458333134651184,1131 "Left": 0.4585937559604645,1132 "Top": 0.29583331942558291133 }1134 }1135 },1136 {1137 "Timestamp": 2794,1138 "Person": {1139 "Index": 0,1140 "BoundingBox": {1141 "Width": 0.23203125596046448,1142 "Height": 0.6416666507720947,1143 "Left": 0.4429687559604645,1144 "Top": 0.29861110448837281145 },1146 "Face": {1147 "BoundingBox": {1148 "Width": 0.08090896904468536,1149 "Height": 0.24057985842227936,1150 "Left": 0.33809056878089905,1151 "Top": 0.246762290596961981152 },1153 "Landmarks": [1154 {1155 "Type": "eyeLeft",1156 "X": 0.36773374676704407,1157 "Y": 0.3229505419731141158 },1159 {1160 "Type": "eyeRight",1161 "X": 0.4046133756637573,1162 "Y": 0.33014521002769471163 },1164 {1165 "Type": "mouthLeft",1166 "X": 0.3689667582511902,1167 "Y": 0.405167996883392331168 },1169 {1170 "Type": "mouthRight",1171 "X": 0.39897462725639343,1172 "Y": 0.411010146141052251173 },1174 {1175 "Type": "nose",1176 "X": 0.39251476526260376,1177 "Y": 0.35724118351936341178 }1179 ],1180 "Pose": {1181 "Roll": 11.296690940856934,1182 "Yaw": 27.864500045776367,1183 "Pitch": 13.6154365539550781184 },1185 "Quality": {1186 "Brightness": 77.75328826904297,1187 "Sharpness": 26.17736816406251188 },1189 "Confidence": 99.99965667724611190 }1191 }1192 },1193 {1194 "Timestamp": 2836,1195 "Person": {1196 "Index": 0,1197 "BoundingBox": {1198 "Width": 0.23203125596046448,1199 "Height": 0.6402778029441833,1200 "Left": 0.44062501192092896,1201 "Top": 0.30277776718139651202 }1203 }1204 },1205 {1206 "Timestamp": 2919,1207 "Person": {1208 "Index": 0,1209 "BoundingBox": {1210 "Width": 0.23046875,1211 "Height": 0.6263889074325562,1212 "Left": 0.44218748807907104,1213 "Top": 0.30833333730697631214 }1215 }1216 },1217 {1218 "Timestamp": 2961,1219 "Person": {1220 "Index": 0,1221 "BoundingBox": {1222 "Width": 0.22421875596046448,1223 "Height": 0.6166666746139526,1224 "Left": 0.4437499940395355,1225 "Top": 0.313888877630233761226 },1227 "Face": {1228 "BoundingBox": {1229 "Width": 0.07872338593006134,1230 "Height": 0.2401568591594696,1231 "Left": 0.3390424847602844,1232 "Top": 0.266916304826736451233 },1234 "Landmarks": [1235 {1236 "Type": "eyeLeft",1237 "X": 0.3693510591983795,1238 "Y": 0.34275484085083011239 },1240 {1241 "Type": "eyeRight",1242 "X": 0.4046688973903656,1243 "Y": 0.34698337316513061244 },1245 {1246 "Type": "mouthLeft",1247 "X": 0.37118157744407654,1248 "Y": 0.423231184482574461249 },1250 {1251 "Type": "mouthRight",1252 "X": 0.39987409114837646,1253 "Y": 0.42646038532257081254 },1255 {1256 "Type": "nose",1257 "X": 0.395155131816864,1258 "Y": 0.375505596399307251259 }1260 ],1261 "Pose": {1262 "Roll": 5.475462436676025,1263 "Yaw": 8.959362030029297,1264 "Pitch": 22.2092304229736331265 },1266 "Quality": {1267 "Brightness": 77.58952331542969,1268 "Sharpness": 26.17736816406251269 },1270 "Confidence": 99.99963378906251271 }1272 }1273 },1274 {1275 "Timestamp": 3044,1276 "Person": {1277 "Index": 0,1278 "BoundingBox": {1279 "Width": 0.20937499403953552,1280 "Height": 0.6097221970558167,1281 "Left": 0.453125,1282 "Top": 0.31666666269302371283 }1284 }1285 },1286 {1287 "Timestamp": 3128,1288 "Person": {1289 "Index": 0,1290 "BoundingBox": {1291 "Width": 0.21171875298023224,1292 "Height": 0.6222222447395325,1293 "Left": 0.4476562440395355,1294 "Top": 0.30138888955116271295 }1296 }1297 },1298 {1299 "Timestamp": 3169,1300 "Person": {1301 "Index": 0,1302 "BoundingBox": {1303 "Width": 0.20468750596046448,1304 "Height": 0.6222222447395325,1305 "Left": 0.4593749940395355,1306 "Top": 0.297222226858139041307 },1308 "Face": {1309 "BoundingBox": {1310 "Width": 0.07634582370519638,1311 "Height": 0.23434600234031677,1312 "Left": 0.3290044367313385,1313 "Top": 0.271067738533021314 },1315 "Landmarks": [1316 {1317 "Type": "eyeLeft",1318 "X": 0.35813528299331665,1319 "Y": 0.34742367267608641320 },1321 {1322 "Type": "eyeRight",1323 "X": 0.3920333981513977,1324 "Y": 0.35103717446327211325 },1326 {1327 "Type": "mouthLeft",1328 "X": 0.3596132695674896,1329 "Y": 0.42745074629783631330 },1331 {1332 "Type": "mouthRight",1333 "X": 0.3871113061904907,1334 "Y": 0.43043547868728641335 },1336 {1337 "Type": "nose",1338 "X": 0.3780852258205414,1339 "Y": 0.38227558135986331340 }1341 ],1342 "Pose": {1343 "Roll": 4.339698314666748,1344 "Yaw": 25.78949546813965,1345 "Pitch": 10.4241046905517581346 },1347 "Quality": {1348 "Brightness": 78.54415893554688,1349 "Sharpness": 16.494920730590821350 },1351 "Confidence": 99.995658874511721352 }1353 }1354 },1355 {1356 "Timestamp": 3253,1357 "Person": {1358 "Index": 1,1359 "BoundingBox": {1360 "Width": 0.3843750059604645,1361 "Height": 0.7972221970558167,1362 "Left": 0.538281261920929,1363 "Top": 0.19444444775581361364 }1365 }1366 },1367 {1368 "Timestamp": 3294,1369 "Person": {1370 "Index": 1,1371 "BoundingBox": {1372 "Width": 0.38671875,1373 "Height": 0.7958333492279053,1374 "Left": 0.557812511920929,1375 "Top": 0.172222226858139041376 }1377 }1378 },1379 {1380 "Timestamp": 3378,1381 "Person": {1382 "Index": 0,1383 "Face": {1384 "BoundingBox": {1385 "Width": 0.0436825267970562,1386 "Height": 0.09618140012025833,1387 "Left": 0.45003342628479004,1388 "Top": 0.598331630229951389 },1390 "Landmarks": [1391 {1392 "Type": "eyeLeft",1393 "X": 0.45997875928878784,1394 "Y": 0.65539455413818361395 },1396 {1397 "Type": "eyeRight",1398 "X": 0.46810656785964966,1399 "Y": 0.65655565261840821400 },1401 {1402 "Type": "mouthLeft",1403 "X": 0.4661518633365631,1404 "Y": 0.67112535238265991405 },1406 {1407 "Type": "mouthRight",1408 "X": 0.4729655385017395,1409 "Y": 0.67294269800186161410 },1411 {1412 "Type": "nose",1413 "X": 0.45882558822631836,1414 "Y": 0.67163234949111941415 }1416 ],1417 "Pose": {1418 "Roll": 8.35768985748291,1419 "Yaw": -42.28255081176758,1420 "Pitch": -54.759906768798831421 },1422 "Quality": {1423 "Brightness": 91.40625,1424 "Sharpness": 4.37483692169189451425 },1426 "Confidence": 99.915328979492191427 }1428 }1429 },1430 {1431 "Timestamp": 3378,1432 "Person": {1433 "Index": 2,1434 "Face": {1435 "BoundingBox": {1436 "Width": 0.052062250673770905,1437 "Height": 0.1101498082280159,1438 "Left": 0.24888555705547333,1439 "Top": 0.69117319583892821440 },1441 "Landmarks": [1442 {1443 "Type": "eyeLeft",1444 "X": 0.2777999937534332,1445 "Y": 0.72394657135009771446 },1447 {1448 "Type": "eyeRight",1449 "X": 0.2921081781387329,1450 "Y": 0.74467515945434571451 },1452 {1453 "Type": "mouthLeft",1454 "X": 0.2686847150325775,1455 "Y": 0.76210737228393551456 },1457 {1458 "Type": "mouthRight",1459 "X": 0.28026658296585083,1460 "Y": 0.77913153171539311461 },1462 {1463 "Type": "nose",1464 "X": 0.2871401906013489,1465 "Y": 0.75498968362808231466 }1467 ],1468 "Pose": {1469 "Roll": 40.25962829589844,1470 "Yaw": 28.442073822021484,1471 "Pitch": 11.089976310729981472 },1473 "Quality": {1474 "Brightness": 77.2774658203125,1475 "Sharpness": 9.9129037857055661476 },1477 "Confidence": 99.95151519775391478 }1479 }1480 },1481 {1482 "Timestamp": 3586,1483 "Person": {1484 "Index": 0,1485 "BoundingBox": {1486 "Width": 0.22812500596046448,1487 "Height": 0.37361112236976624,1488 "Left": 0.46484375,1489 "Top": 0.61111110448837281490 },1491 "Face": {1492 "BoundingBox": {1493 "Width": 0.045074462890625,1494 "Height": 0.09440883994102478,1495 "Left": 0.4592270255088806,1496 "Top": 0.60350424051284791497 },1498 "Landmarks": [1499 {1500 "Type": "eyeLeft",1501 "X": 0.46653982996940613,1502 "Y": 0.65706402063369751503 },1504 {1505 "Type": "eyeRight",1506 "X": 0.471731573343277,1507 "Y": 0.65680032968521121508 },1509 {1510 "Type": "mouthLeft",1511 "X": 0.47101959586143494,1512 "Y": 0.66599649190902711513 },1514 {1515 "Type": "mouthRight",1516 "X": 0.4754386246204376,1517 "Y": 0.66616374254226681518 },1519 {1520 "Type": "nose",1521 "X": 0.46537545323371887,1522 "Y": 0.66811412572860721523 }1524 ],1525 "Pose": {1526 "Roll": -34.899757385253906,1527 "Yaw": -76.26409149169922,1528 "Pitch": -6.4615163803100591529 },1530 "Quality": {1531 "Brightness": 90.72547149658203,1532 "Sharpness": 4.37483692169189451533 },1534 "Confidence": 99.998870849609381535 }1536 }1537 },1538 {1539 "Timestamp": 3586,1540 "Person": {1541 "Index": 2,1542 "Face": {1543 "BoundingBox": {1544 "Width": 0.04916989803314209,1545 "Height": 0.09975255280733109,1546 "Left": 0.2586430311203003,1547 "Top": 0.6948488950729371548 },1549 "Landmarks": [1550 {1551 "Type": "eyeLeft",1552 "X": 0.288530170917511,1553 "Y": 0.72877359390258791554 },1555 {1556 "Type": "eyeRight",1557 "X": 0.30147165060043335,1558 "Y": 0.74187242984771731559 },1560 {1561 "Type": "mouthLeft",1562 "X": 0.2790607511997223,1563 "Y": 0.76612526178359991564 },1565 {1566 "Type": "mouthRight",1567 "X": 0.28947925567626953,1568 "Y": 0.77638208866119381569 },1570 {1571 "Type": "nose",1572 "X": 0.2976292073726654,1573 "Y": 0.75788557529449461574 }1575 ],1576 "Pose": {1577 "Roll": 32.382389068603516,1578 "Yaw": 45.157840728759766,1579 "Pitch": -1.08776068687438961580 },1581 "Quality": {1582 "Brightness": 76.73611450195312,1583 "Sharpness": 9.9129037857055661584 },1585 "Confidence": 99.3395996093751586 }1587 }1588 },1589 {1590 "Timestamp": 3628,1591 "Person": {1592 "Index": 0,1593 "BoundingBox": {1594 "Width": 0.35078126192092896,1595 "Height": 0.7638888955116272,1596 "Left": 0.58203125,1597 "Top": 0.211111113429069521598 }1599 }1600 },1601 {1602 "Timestamp": 3712,1603 "Person": {1604 "Index": 0,1605 "BoundingBox": {1606 "Width": 0.20859375596046448,1607 "Height": 0.5222222208976746,1608 "Left": 0.578906238079071,1609 "Top": 0.41388890147209171610 }1611 }1612 },1613 {1614 "Timestamp": 3795,1615 "Person": {1616 "Index": 0,1617 "BoundingBox": {1618 "Width": 0.20624999701976776,1619 "Height": 0.49444442987442017,1620 "Left": 0.5726562738418579,1621 "Top": 0.436111122369766241622 },1623 "Face": {1624 "BoundingBox": {1625 "Width": 0.046555280685424805,1626 "Height": 0.09648844599723816,1627 "Left": 0.4456670880317688,1628 "Top": 0.61136382818222051629 },1630 "Landmarks": [1631 {1632 "Type": "eyeLeft",1633 "X": 0.4498349130153656,1634 "Y": 0.66045385599136351635 },1636 {1637 "Type": "eyeRight",1638 "X": 0.4642581641674042,1639 "Y": 0.65478050708770751640 },1641 {1642 "Type": "mouthLeft",1643 "X": 0.460275799036026,1644 "Y": 0.69321274757385251645 },1646 {1647 "Type": "mouthRight",1648 "X": 0.4722413122653961,1649 "Y": 0.6891930699348451650 },1651 {1652 "Type": "nose",1653 "X": 0.45479726791381836,1654 "Y": 0.68272775411605831655 }1656 ],1657 "Pose": {1658 "Roll": -17.167329788208008,1659 "Yaw": -40.52824020385742,1660 "Pitch": -4.9252042770385741661 },1662 "Quality": {1663 "Brightness": 89.2896499633789,1664 "Sharpness": 4.37483692169189451665 },1666 "Confidence": 99.992477416992191667 }1668 }1669 },1670 {1671 "Timestamp": 3795,1672 "Person": {1673 "Index": 2,1674 "Face": {1675 "BoundingBox": {1676 "Width": 0.05094962194561958,1677 "Height": 0.09627176821231842,1678 "Left": 0.24331244826316833,1679 "Top": 0.69790655374526981680 },1681 "Landmarks": [1682 {1683 "Type": "eyeLeft",1684 "X": 0.27154847979545593,1685 "Y": 0.72648072242736821686 },1687 {1688 "Type": "eyeRight",1689 "X": 0.287061482667923,1690 "Y": 0.74601668119430541691 },1692 {1693 "Type": "mouthLeft",1694 "X": 0.26202136278152466,1695 "Y": 0.76485645771026611696 },1697 {1698 "Type": "mouthRight",1699 "X": 0.27469462156295776,1700 "Y": 0.78081750869750981701 },1702 {1703 "Type": "nose",1704 "X": 0.2807043194770813,1705 "Y": 0.7586470842361451706 }1707 ],1708 "Pose": {1709 "Roll": 35.2432975769043,1710 "Yaw": 29.52535057067871,1711 "Pitch": -0.135050490498542791712 },1713 "Quality": {1714 "Brightness": 81.19279479980469,1715 "Sharpness": 9.9129037857055661716 },1717 "Confidence": 99.54489898681641718 }1719 }1720 },1721 {1722 "Timestamp": 3837,1723 "Person": {1724 "Index": 0,1725 "BoundingBox": {1726 "Width": 0.2632812559604645,1727 "Height": 0.3916666805744171,1728 "Left": 0.4296875,1729 "Top": 0.59444445371627811730 }1731 }1732 },1733 {1734 "Timestamp": 3920,1735 "Person": {1736 "Index": 0,1737 "BoundingBox": {1738 "Width": 0.21875,1739 "Height": 0.4722222089767456,1740 "Left": 0.565625011920929,1741 "Top": 0.44722223281860351742 }1743 }1744 },1745 {1746 "Timestamp": 3962,1747 "Person": {1748 "Index": 0,1749 "BoundingBox": {1750 "Width": 0.20703125,1751 "Height": 0.4819444417953491,1752 "Left": 0.565625011920929,1753 "Top": 0.452777773141860961754 },1755 "Face": {1756 "BoundingBox": {1757 "Width": 0.03510703891515732,1758 "Height": 0.06442566215991974,1759 "Left": 0.5275834798812866,1760 "Top": 0.74843633174896241761 },1762 "Landmarks": [1763 {1764 "Type": "eyeLeft",1765 "X": 0.5419910550117493,1766 "Y": 0.78195118904113771767 },1768 {1769 "Type": "eyeRight",1770 "X": 0.5421046018600464,1771 "Y": 0.77471268177032471772 },1773 {1774 "Type": "mouthLeft",1775 "X": 0.5475783944129944,1776 "Y": 0.78370022773742681777 },1778 {1779 "Type": "mouthRight",1780 "X": 0.5475873947143555,1781 "Y": 0.77773451805114751782 },1783 {1784 "Type": "nose",1785 "X": 0.5447050929069519,1786 "Y": 0.77762097120285031787 }1788 ],1789 "Pose": {1790 "Roll": -84.41542053222656,1791 "Yaw": 41.320865631103516,1792 "Pitch": -7.623333454132081793 },1794 "Quality": {1795 "Brightness": 84.61119079589844,1796 "Sharpness": 2.4851987361907961797 },1798 "Confidence": 82.444229125976561799 }1800 }1801 },1802 {1803 "Timestamp": 3962,1804 "Person": {1805 "Index": 1,1806 "BoundingBox": {1807 "Width": 0.3687500059604645,1808 "Height": 0.581944465637207,1809 "Left": 0.620312511920929,1810 "Top": 0.00138888892251998191811 }1812 }1813 },1814 {1815 "Timestamp": 3962,1816 "Person": {1817 "Index": 2,1818 "Face": {1819 "BoundingBox": {1820 "Width": 0.05249962955713272,1821 "Height": 0.1127743199467659,1822 "Left": 0.2280561923980713,1823 "Top": 0.68096297979354861824 },1825 "Landmarks": [1826 {1827 "Type": "eyeLeft",1828 "X": 0.2572782337665558,1829 "Y": 0.71678817272186281830 },1831 {1832 "Type": "eyeRight",1833 "X": 0.27226731181144714,1834 "Y": 0.73664331436157231835 },1836 {1837 "Type": "mouthLeft",1838 "X": 0.247918963432312,1839 "Y": 0.75543987751007081840 },1841 {1842 "Type": "mouthRight",1843 "X": 0.2600848376750946,1844 "Y": 0.77165794372558591845 },1846 {1847 "Type": "nose",1848 "X": 0.26670756936073303,1849 "Y": 0.74787741899490361850 }1851 ],1852 "Pose": {1853 "Roll": 37.451377868652344,1854 "Yaw": 29.84445571899414,1855 "Pitch": 4.98310375213623051856 },1857 "Quality": {1858 "Brightness": 73.43990325927734,1859 "Sharpness": 9.9129037857055661860 },1861 "Confidence": 99.998245239257811862 }1863 }1864 },1865 {1866 "Timestamp": 4045,1867 "Person": {1868 "Index": 0,1869 "BoundingBox": {1870 "Width": 0.20624999701976776,1871 "Height": 0.4791666567325592,1872 "Left": 0.5687500238418579,1873 "Top": 0.44166666269302371874 }1875 }1876 },1877 {1878 "Timestamp": 4045,1879 "Person": {1880 "Index": 1,1881 "BoundingBox": {1882 "Width": 0.3609375059604645,1883 "Height": 0.5916666388511658,1884 "Left": 0.62890625,1885 "Top": 01886 }1887 }1888 },1889 {1890 "Timestamp": 4129,1891 "Person": {1892 "Index": 0,1893 "BoundingBox": {1894 "Width": 0.19218750298023224,1895 "Height": 0.4972222149372101,1896 "Left": 0.58984375,1897 "Top": 0.42777776718139651898 }1899 }1900 },1901 {1902 "Timestamp": 4170,1903 "Person": {1904 "Index": 0,1905 "BoundingBox": {1906 "Width": 0.19609375298023224,1907 "Height": 0.4902777671813965,1908 "Left": 0.5765625238418579,1909 "Top": 0.438888877630233761910 },1911 "Face": {1912 "BoundingBox": {1913 "Width": 0.029225921258330345,1914 "Height": 0.06017841771245003,1915 "Left": 0.5565773248672485,1916 "Top": 0.51154899597167971917 },1918 "Landmarks": [1919 {1920 "Type": "eyeLeft",1921 "X": 0.5631929636001587,1922 "Y": 0.54482072591781621923 },1924 {1925 "Type": "eyeRight",1926 "X": 0.575363039970398,1927 "Y": 0.53424638509750371928 },1929 {1930 "Type": "mouthLeft",1931 "X": 0.5701005458831787,1932 "Y": 0.56554895639419561933 },1934 {1935 "Type": "mouthRight",1936 "X": 0.5802014470100403,1937 "Y": 0.55668354034423831938 },1939 {1940 "Type": "nose",1941 "X": 0.5722991228103638,1942 "Y": 0.55072617530822751943 }1944 ],1945 "Pose": {1946 "Roll": -25.986289978027344,1947 "Yaw": -1.0788993835449219,1948 "Pitch": -15.3618726730346681949 },1950 "Quality": {1951 "Brightness": 68.62089538574219,1952 "Sharpness": 3.30185699462890621953 },1954 "Confidence": 99.392807006835941955 }1956 }1957 },1958 {1959 "Timestamp": 4170,1960 "Person": {1961 "Index": 2,1962 "Face": {1963 "BoundingBox": {1964 "Width": 0.04907076433300972,1965 "Height": 0.09964116662740707,1966 "Left": 0.21460707485675812,1967 "Top": 0.67709958553314211968 },1969 "Landmarks": [1970 {1971 "Type": "eyeLeft",1972 "X": 0.24320869147777557,1973 "Y": 0.70581114292144781974 },1975 {1976 "Type": "eyeRight",1977 "X": 0.258578360080719,1978 "Y": 0.72537666559219361979 },1980 {1981 "Type": "mouthLeft",1982 "X": 0.23389917612075806,1983 "Y": 0.7443736195564271984 },1985 {1986 "Type": "mouthRight",1987 "X": 0.24645066261291504,1988 "Y": 0.76044768095016481989 },1990 {1991 "Type": "nose",1992 "X": 0.2519938349723816,1993 "Y": 0.73772442340850831994 }1995 ],1996 "Pose": {1997 "Roll": 36.551334381103516,1998 "Yaw": 10.538799285888672,1999 "Pitch": 18.0224781036376952000 },2001 "Quality": {2002 "Brightness": 74.87858581542969,2003 "Sharpness": 9.9129037857055662004 },2005 "Confidence": 80.219528198242192006 }2007 }2008 },2009 {2010 "Timestamp": 4170,2011 "Person": {2012 "Index": 3,2013 "Face": {2014 "BoundingBox": {2015 "Width": 0.057156752794981,2016 "Height": 0.14088410139083862,2017 "Left": 0.7576442956924438,2018 "Top": 0.358367323875427252019 },2020 "Landmarks": [2021 {2022 "Type": "eyeLeft",2023 "X": 0.7752066850662231,2024 "Y": 0.414406359195709232025 },2026 {2027 "Type": "eyeRight",2028 "X": 0.8001822829246521,2029 "Y": 0.408829838037490842030 },2031 {2032 "Type": "mouthLeft",2033 "X": 0.7792077660560608,2034 "Y": 0.466768860816955572035 },2036 {2037 "Type": "mouthRight",2038 "X": 0.7998460531234741,2039 "Y": 0.461966454982757572040 },2041 {2042 "Type": "nose",2043 "X": 0.7911665439605713,2044 "Y": 0.446806818246841432045 }2046 ],2047 "Pose": {2048 "Roll": -3.555853843688965,2049 "Yaw": 9.5701265335083,2050 "Pitch": -5.8747801780700682051 },2052 "Quality": {2053 "Brightness": 84.30735778808594,2054 "Sharpness": 12.8487644195556642055 },2056 "Confidence": 99.944396972656252057 }2058 }2059 },2060 {2061 "Timestamp": 4254,2062 "Person": {2063 "Index": 0,2064 "BoundingBox": {2065 "Width": 0.19921875,2066 "Height": 0.4902777671813965,2067 "Left": 0.5718749761581421,2068 "Top": 0.46111109852790832069 }2070 }2071 },2072 {2073 "Timestamp": 4295,2074 "Person": {2075 "Index": 0,2076 "BoundingBox": {2077 "Width": 0.21328124403953552,2078 "Height": 0.5333333611488342,2079 "Left": 0.563281238079071,2080 "Top": 0.41666665673255922081 }2082 }2083 },2084 {2085 "Timestamp": 4379,2086 "Person": {2087 "Index": 0,2088 "BoundingBox": {2089 "Width": 0.22890624403953552,2090 "Height": 0.5236111283302307,2091 "Left": 0.5,2092 "Top": 0.44722223281860352093 },2094 "Face": {2095 "BoundingBox": {2096 "Width": 0.03577737882733345,2097 "Height": 0.06388973444700241,2098 "Left": 0.49868616461753845,2099 "Top": 0.74382716417312622100 },2101 "Landmarks": [2102 {2103 "Type": "eyeLeft",2104 "X": 0.5100175142288208,2105 "Y": 0.78048992156982422106 },2107 {2108 "Type": "eyeRight",2109 "X": 0.5121437907218933,2110 "Y": 0.77083462476730352111 },2112 {2113 "Type": "mouthLeft",2114 "X": 0.516028106212616,2115 "Y": 0.78520381450653082116 },2117 {2118 "Type": "mouthRight",2119 "X": 0.5176597237586975,2120 "Y": 0.77707237005233762121 },2122 {2123 "Type": "nose",2124 "X": 0.5141998529434204,2125 "Y": 0.77650231122970582126 }2127 ],2128 "Pose": {2129 "Roll": -69.79737091064453,2130 "Yaw": 24.638330459594727,2131 "Pitch": -20.5324058532714842132 },2133 "Quality": {2134 "Brightness": 84.35852813720703,2135 "Sharpness": 3.30185699462890622136 },2137 "Confidence": 78.575843811035162138 }2139 }2140 },2141 {2142 "Timestamp": 4379,2143 "Person": {2144 "Index": 1,2145 "Face": {2146 "BoundingBox": {2147 "Width": 0.02955789491534233,2148 "Height": 0.06968799233436584,2149 "Left": 0.6298583149909973,2150 "Top": 0.351785182952880862151 },2152 "Landmarks": [2153 {2154 "Type": "eyeLeft",2155 "X": 0.6377646923065186,2156 "Y": 0.38245335221290592157 },2158 {2159 "Type": "eyeRight",2160 "X": 0.6509439945220947,2161 "Y": 0.376955181360244752162 },2163 {2164 "Type": "mouthLeft",2165 "X": 0.6420321464538574,2166 "Y": 0.405243784189224242167 },2168 {2169 "Type": "mouthRight",2170 "X": 0.6529828310012817,2171 "Y": 0.40068808197975162172 },2173 {2174 "Type": "nose",2175 "X": 0.6458422541618347,2176 "Y": 0.39131063222885132177 }2178 ],2179 "Pose": {2180 "Roll": -13.660911560058594,2181 "Yaw": 0.8818010091781616,2182 "Pitch": -11.6498641967773442183 },2184 "Quality": {2185 "Brightness": 60.28493118286133,2186 "Sharpness": 5.7756686210632322187 },2188 "Confidence": 99.914123535156252189 }2190 }2191 },2192 {2193 "Timestamp": 4379,2194 "Person": {2195 "Index": 3,2196 "Face": {2197 "BoundingBox": {2198 "Width": 0.05807075649499893,2199 "Height": 0.14137929677963257,2200 "Left": 0.7429620623588562,2201 "Top": 0.35904735326766972202 },2203 "Landmarks": [2204 {2205 "Type": "eyeLeft",2206 "X": 0.7591871619224548,2207 "Y": 0.417602181434631352208 },2209 {2210 "Type": "eyeRight",2211 "X": 0.7857145667076111,2212 "Y": 0.41091218590736392213 },2214 {2215 "Type": "mouthLeft",2216 "X": 0.7637394070625305,2217 "Y": 0.469702690839767462218 },2219 {2220 "Type": "mouthRight",2221 "X": 0.7857698798179626,2222 "Y": 0.46396726369857792223 },2224 {2225 "Type": "nose",2226 "X": 0.7755439281463623,2227 "Y": 0.45052814483642582228 }2229 ],2230 "Pose": {2231 "Roll": -5.8061299324035645,2232 "Yaw": 7.431210994720459,2233 "Pitch": -9.096775054931642234 },2235 "Quality": {2236 "Brightness": 85.7047348022461,2237 "Sharpness": 12.8487644195556642238 },2239 "Confidence": 99.974746704101562240 }2241 }2242 },2243 {2244 "Timestamp": 4462,2245 "Person": {2246 "Index": 0,2247 "BoundingBox": {2248 "Width": 0.22890624403953552,2249 "Height": 0.5444444417953491,2250 "Left": 0.4898437559604645,2251 "Top": 0.40555554628372192252 }2253 }2254 },2255 {2256 "Timestamp": 4504,2257 "Person": {2258 "Index": 0,2259 "BoundingBox": {2260 "Width": 0.22578124701976776,2261 "Height": 0.5263888835906982,2262 "Left": 0.4867187440395355,2263 "Top": 0.40555554628372192264 }2265 }2266 },2267 {2268 "Timestamp": 4504,2269 "Person": {2270 "Index": 1,2271 "BoundingBox": {2272 "Width": 0.28984373807907104,2273 "Height": 0.5319444537162781,2274 "Left": 0.6664062738418579,2275 "Top": 0.070833332836627962276 }2277 }2278 },2279 {2280 "Timestamp": 4587,2281 "Person": {2282 "Index": 0,2283 "BoundingBox": {2284 "Width": 0.23125000298023224,2285 "Height": 0.5347222089767456,2286 "Left": 0.4828124940395355,2287 "Top": 0.411111116409301762288 },2289 "Face": {2290 "BoundingBox": {2291 "Width": 0.037947941571474075,2292 "Height": 0.06534042209386826,2293 "Left": 0.47675156593322754,2294 "Top": 0.77696353197097782295 },2296 "Landmarks": [2297 {2298 "Type": "eyeLeft",2299 "X": 0.4923573136329651,2300 "Y": 0.81562060117721562301 },2302 {2303 "Type": "eyeRight",2304 "X": 0.49256718158721924,2305 "Y": 0.8080210685729982306 },2307 {2308 "Type": "mouthLeft",2309 "X": 0.4977704584598541,2310 "Y": 0.81574404239654542311 },2312 {2313 "Type": "mouthRight",2314 "X": 0.4979013204574585,2315 "Y": 0.80940794944763182316 },2317 {2318 "Type": "nose",2319 "X": 0.4960417151451111,2320 "Y": 0.81214362382888792321 }2322 ],2323 "Pose": {2324 "Roll": -86.41336822509766,2325 "Yaw": -0.9276757836341858,2326 "Pitch": -9.451747894287112327 },2328 "Quality": {2329 "Brightness": 82.326904296875,2330 "Sharpness": 3.30185699462890622331 },2332 "Confidence": 87.084785461425782333 }2334 }2335 },2336 {2337 "Timestamp": 4587,2338 "Person": {2339 "Index": 1,2340 "BoundingBox": {2341 "Width": 0.3375000059604645,2342 "Height": 0.7597222328186035,2343 "Left": 0.604687511920929,2344 "Top": 0.155555561184883122345 },2346 "Face": {2347 "BoundingBox": {2348 "Width": 0.031929682940244675,2349 "Height": 0.07837880402803421,2350 "Left": 0.6063040494918823,2351 "Top": 0.31011474132537842352 },2353 "Landmarks": [2354 {2355 "Type": "eyeLeft",2356 "X": 0.6154574751853943,2357 "Y": 0.34338772296905522358 },2359 {2360 "Type": "eyeRight",2361 "X": 0.6298205256462097,2362 "Y": 0.337923437356948852363 },2364 {2365 "Type": "mouthLeft",2366 "X": 0.6199052333831787,2367 "Y": 0.368350178003311162368 },2369 {2370 "Type": "mouthRight",2371 "X": 0.6318361163139343,2372 "Y": 0.363839358091354372373 },2374 {2375 "Type": "nose",2376 "X": 0.6244090795516968,2377 "Y": 0.35298594832420352378 }2379 ],2380 "Pose": {2381 "Roll": -12.857104301452637,2382 "Yaw": 2.9650332927703857,2383 "Pitch": -10.6760673522949222384 },2385 "Quality": {2386 "Brightness": 61.770145416259766,2387 "Sharpness": 5.7756686210632322388 },2389 "Confidence": 99.997756958007812390 }2391 }2392 },2393 {2394 "Timestamp": 4629,2395 "Person": {2396 "Index": 0,2397 "BoundingBox": {2398 "Width": 0.23125000298023224,2399 "Height": 0.5333333611488342,2400 "Left": 0.4828124940395355,2401 "Top": 0.41249999403953552402 }2403 }2404 },2405 {2406 "Timestamp": 4629,2407 "Person": {2408 "Index": 1,2409 "BoundingBox": {2410 "Width": 0.3382812440395355,2411 "Height": 0.7638888955116272,2412 "Left": 0.60546875,2413 "Top": 0.155555561184883122414 }2415 }2416 },2417 {2418 "Timestamp": 4713,2419 "Person": {2420 "Index": 0,2421 "BoundingBox": {2422 "Width": 0.22343750298023224,2423 "Height": 0.5291666388511658,2424 "Left": 0.4867187440395355,2425 "Top": 0.40277779102325442426 }2427 }2428 },2429 {2430 "Timestamp": 4713,2431 "Person": {2432 "Index": 1,2433 "BoundingBox": {2434 "Width": 0.2867187559604645,2435 "Height": 0.5152778029441833,2436 "Left": 0.6695312261581421,2437 "Top": 0.087499998509883882438 }2439 }2440 },2441 {2442 "Timestamp": 4796,2443 "Person": {2444 "Index": 0,2445 "BoundingBox": {2446 "Width": 0.22890624403953552,2447 "Height": 0.5333333611488342,2448 "Left": 0.49140626192092896,2449 "Top": 0.436111122369766242450 },2451 "Face": {2452 "BoundingBox": {2453 "Width": 0.0351838581264019,2454 "Height": 0.0722910538315773,2455 "Left": 0.5263665914535522,2456 "Top": 0.46548685431480412457 },2458 "Landmarks": [2459 {2460 "Type": "eyeLeft",2461 "X": 0.5406652092933655,2462 "Y": 0.49910017848014832463 },2464 {2465 "Type": "eyeRight",2466 "X": 0.5520206689834595,2467 "Y": 0.489788085222244262468 },2469 {2470 "Type": "mouthLeft",2471 "X": 0.5476237535476685,2472 "Y": 0.52111315727233892473 },2474 {2475 "Type": "mouthRight",2476 "X": 0.5569408535957336,2477 "Y": 0.51345753669738772478 },2479 {2480 "Type": "nose",2481 "X": 0.5498831272125244,2482 "Y": 0.5023463964462282483 }2484 ],2485 "Pose": {2486 "Roll": -25.228137969970703,2487 "Yaw": -11.337225914001465,2488 "Pitch": 14.6082572937011722489 },2490 "Quality": {2491 "Brightness": 70.78730010986328,2492 "Sharpness": 5.7756686210632322493 },2494 "Confidence": 99.944183349609382495 }2496 }2497 },2498 {2499 "Timestamp": 4796,2500 "Person": {2501 "Index": 1,2502 "Face": {2503 "BoundingBox": {2504 "Width": 0.028093671426177025,2505 "Height": 0.06769832968711853,2506 "Left": 0.6254376769065857,2507 "Top": 0.34512189030647282508 },2509 "Landmarks": [2510 {2511 "Type": "eyeLeft",2512 "X": 0.6333991289138794,2513 "Y": 0.3744031786918642514 },2515 {2516 "Type": "eyeRight",2517 "X": 0.6464724540710449,2518 "Y": 0.369238138198852542519 },2520 {2521 "Type": "mouthLeft",2522 "X": 0.6375779509544373,2523 "Y": 0.397331476211547852524 },2525 {2526 "Type": "mouthRight",2527 "X": 0.648431658744812,2528 "Y": 0.39305862784385682529 },2530 {2531 "Type": "nose",2532 "X": 0.6416106224060059,2533 "Y": 0.383095294237136842534 }2535 ],2536 "Pose": {2537 "Roll": -13.22263240814209,2538 "Yaw": 3.157423496246338,2539 "Pitch": -9.042355537414552540 },2541 "Quality": {2542 "Brightness": 62.60115432739258,2543 "Sharpness": 5.7756686210632322544 },2545 "Confidence": 99.938568115234382546 }2547 }2548 },2549 {2550 "Timestamp": 4796,2551 "Person": {2552 "Index": 3,2553 "Face": {2554 "BoundingBox": {2555 "Width": 0.05765523761510849,2556 "Height": 0.1422329843044281,2557 "Left": 0.7368675470352173,2558 "Top": 0.361326813697814942559 },2560 "Landmarks": [2561 {2562 "Type": "eyeLeft",2563 "X": 0.7543796300888062,2564 "Y": 0.421869099140167242565 },2566 {2567 "Type": "eyeRight",2568 "X": 0.780733048915863,2569 "Y": 0.415059506893157962570 },2571 {2572 "Type": "mouthLeft",2573 "X": 0.7590498328208923,2574 "Y": 0.47285503149032592575 },2576 {2577 "Type": "mouthRight",2578 "X": 0.7809809446334839,2579 "Y": 0.46711099147796632580 },2581 {2582 "Type": "nose",2583 "X": 0.770061194896698,2584 "Y": 0.45534303784370422585 }2586 ],2587 "Pose": {2588 "Roll": -5.954798698425293,2589 "Yaw": 5.12587833404541,2590 "Pitch": -8.4040565490722662591 },2592 "Quality": {2593 "Brightness": 85.53726959228516,2594 "Sharpness": 12.8487644195556642595 },2596 "Confidence": 99.955108642578122597 }2598 }2599 },2600 {2601 "Timestamp": 4838,2602 "Person": {2603 "Index": 0,2604 "BoundingBox": {2605 "Width": 0.22187499701976776,2606 "Height": 0.5249999761581421,2607 "Left": 0.49921876192092896,2608 "Top": 0.44722223281860352609 }2610 }2611 },2612 {2613 "Timestamp": 4921,2614 "Person": {2615 "Index": 0,2616 "BoundingBox": {2617 "Width": 0.21640625596046448,2618 "Height": 0.5444444417953491,2619 "Left": 0.565625011920929,2620 "Top": 0.408333331346511842621 }2622 }2623 },2624 {2625 "Timestamp": 4963,2626 "Person": {2627 "Index": 0,2628 "BoundingBox": {2629 "Width": 0.20703125,2630 "Height": 0.5138888955116272,2631 "Left": 0.5703125,2632 "Top": 0.431944429874420172633 },2634 "Face": {2635 "BoundingBox": {2636 "Width": 0.03153662756085396,2637 "Height": 0.06714172661304474,2638 "Left": 0.5535680055618286,2639 "Top": 0.49773418903350832640 },2641 "Landmarks": [2642 {2643 "Type": "eyeLeft",2644 "X": 0.5626161098480225,2645 "Y": 0.53130012750625612646 },2647 {2648 "Type": "eyeRight",2649 "X": 0.5732694864273071,2650 "Y": 0.52179634571075442651 },2652 {2653 "Type": "mouthLeft",2654 "X": 0.5693497061729431,2655 "Y": 0.5509062409400942656 },2657 {2658 "Type": "mouthRight",2659 "X": 0.5780978202819824,2660 "Y": 0.5430690646171572661 },2662 {2663 "Type": "nose",2664 "X": 0.5700815916061401,2665 "Y": 0.53414553403854372666 }2667 ],2668 "Pose": {2669 "Roll": -26.330547332763672,2670 "Yaw": 2.3159470558166504,2671 "Pitch": 21.0342769622802732672 },2673 "Quality": {2674 "Brightness": 68.86649322509766,2675 "Sharpness": 5.7756686210632322676 },2677 "Confidence": 99.568756103515622678 }2679 }2680 },2681 {2682 "Timestamp": 4963,2683 "Person": {2684 "Index": 1,2685 "Face": {2686 "BoundingBox": {2687 "Width": 0.026683997362852097,2688 "Height": 0.06527680158615112,2689 "Left": 0.6411415934562683,2690 "Top": 0.386794239282608032691 },2692 "Landmarks": [2693 {2694 "Type": "eyeLeft",2695 "X": 0.6487727761268616,2696 "Y": 0.414659619331359862697 },2698 {2699 "Type": "eyeRight",2700 "X": 0.6606518626213074,2701 "Y": 0.40983751416206362702 },2703 {2704 "Type": "mouthLeft",2705 "X": 0.6526082754135132,2706 "Y": 0.43633839488029482707 },2708 {2709 "Type": "mouthRight",2710 "X": 0.6624476909637451,2711 "Y": 0.432365417480468752712 },2713 {2714 "Type": "nose",2715 "X": 0.6560378670692444,2716 "Y": 0.42314538359642032717 }2718 ],2719 "Pose": {2720 "Roll": -13.01683235168457,2721 "Yaw": 2.484100818634033,2722 "Pitch": -3.22582197189331052723 },2724 "Quality": {2725 "Brightness": 59.73790740966797,2726 "Sharpness": 4.37483692169189452727 },2728 "Confidence": 99.987495422363282729 }2730 }2731 },2732 {2733 "Timestamp": 4963,2734 "Person": {2735 "Index": 3,2736 "Face": {2737 "BoundingBox": {2738 "Width": 0.056975554674863815,2739 "Height": 0.1408417522907257,2740 "Left": 0.7557791471481323,2741 "Top": 0.35771039128303532742 },2743 "Landmarks": [2744 {2745 "Type": "eyeLeft",2746 "X": 0.7723875045776367,2747 "Y": 0.415619701147079472748 },2749 {2750 "Type": "eyeRight",2751 "X": 0.797977089881897,2752 "Y": 0.409345239400863652753 },2754 {2755 "Type": "mouthLeft",2756 "X": 0.7770684361457825,2757 "Y": 0.46749350428581242758 },2759 {2760 "Type": "mouthRight",2761 "X": 0.798258900642395,2762 "Y": 0.46215113997459412763 },2764 {2765 "Type": "nose",2766 "X": 0.7884072065353394,2767 "Y": 0.447655975818634032768 }2769 ],2770 "Pose": {2771 "Roll": -5.702855110168457,2772 "Yaw": 2.343005895614624,2773 "Pitch": -3.79341387748718262774 },2775 "Quality": {2776 "Brightness": 85.57819366455078,2777 "Sharpness": 9.9129037857055662778 },2779 "Confidence": 99.978645324707032780 }2781 }2782 },2783 {2784 "Timestamp": 5046,2785 "Person": {2786 "Index": 0,2787 "BoundingBox": {2788 "Width": 0.21953125298023224,2789 "Height": 0.550000011920929,2790 "Left": 0.5648437738418579,2791 "Top": 0.401388883590698242792 }2793 }2794 },2795 {2796 "Timestamp": 5130,2797 "Person": {2798 "Index": 0,2799 "BoundingBox": {2800 "Width": 0.22187499701976776,2801 "Height": 0.5305555462837219,2802 "Left": 0.49921876192092896,2803 "Top": 0.44027778506278992804 }2805 }2806 },2807 {2808 "Timestamp": 5171,2809 "Person": {2810 "Index": 0,2811 "BoundingBox": {2812 "Width": 0.23046875,2813 "Height": 0.5375000238418579,2814 "Left": 0.49140626192092896,2815 "Top": 0.431944429874420172816 },2817 "Face": {2818 "BoundingBox": {2819 "Width": 0.03397493436932564,2820 "Height": 0.0715993270277977,2821 "Left": 0.5283830165863037,2822 "Top": 0.46700686216354372823 },2824 "Landmarks": [2825 {2826 "Type": "eyeLeft",2827 "X": 0.538428783416748,2828 "Y": 0.50001609325408942829 },2830 {2831 "Type": "eyeRight",2832 "X": 0.5502660870552063,2833 "Y": 0.48914933204650882834 },2835 {2836 "Type": "mouthLeft",2837 "X": 0.5463516116142273,2838 "Y": 0.52151650190353392839 },2840 {2841 "Type": "mouthRight",2842 "X": 0.5560929179191589,2843 "Y": 0.51257336139678962844 },2845 {2846 "Type": "nose",2847 "X": 0.5475618243217468,2848 "Y": 0.50217819213867192849 }2850 ],2851 "Pose": {2852 "Roll": -26.129945755004883,2853 "Yaw": 5.574108123779297,2854 "Pitch": 24.901502609252932855 },2856 "Quality": {2857 "Brightness": 69.93513488769531,2858 "Sharpness": 5.7756686210632322859 },2860 "Confidence": 99.9602050781252861 }2862 }2863 },2864 {2865 "Timestamp": 5171,2866 "Person": {2867 "Index": 1,2868 "Face": {2869 "BoundingBox": {2870 "Width": 0.028451014310121536,2871 "Height": 0.06909086555242538,2872 "Left": 0.6254907250404358,2873 "Top": 0.34455579519271852874 },2875 "Landmarks": [2876 {2877 "Type": "eyeLeft",2878 "X": 0.6335756182670593,2879 "Y": 0.374354392290115362880 },2881 {2882 "Type": "eyeRight",2883 "X": 0.6468915939331055,2884 "Y": 0.36943829059600832885 },2886 {2887 "Type": "mouthLeft",2888 "X": 0.6374925374984741,2889 "Y": 0.398160994052886962890 },2891 {2892 "Type": "mouthRight",2893 "X": 0.648542582988739,2894 "Y": 0.39408969879150392895 },2896 {2897 "Type": "nose",2898 "X": 0.6416685581207275,2899 "Y": 0.38403677940368652900 }2901 ],2902 "Pose": {2903 "Roll": -11.95706844329834,2904 "Yaw": 2.7551426887512207,2905 "Pitch": -7.560968875885012906 },2907 "Quality": {2908 "Brightness": 61.080562591552734,2909 "Sharpness": 5.7756686210632322910 },2911 "Confidence": 99.940193176269532912 }2913 }2914 },2915 {2916 "Timestamp": 5171,2917 "Person": {2918 "Index": 3,2919 "Face": {2920 "BoundingBox": {2921 "Width": 0.057374097406864166,2922 "Height": 0.13998451828956604,2923 "Left": 0.7363119125366211,2924 "Top": 0.36215579509735112925 },2926 "Landmarks": [2927 {2928 "Type": "eyeLeft",2929 "X": 0.7546648383140564,2930 "Y": 0.42237901687622072931 },2932 {2933 "Type": "eyeRight",2934 "X": 0.7801780104637146,2935 "Y": 0.41636735200881962936 },2937 {2938 "Type": "mouthLeft",2939 "X": 0.7589820027351379,2940 "Y": 0.47402274608612062941 },2942 {2943 "Type": "mouthRight",2944 "X": 0.7801190614700317,2945 "Y": 0.46894159913063052946 },2947 {2948 "Type": "nose",2949 "X": 0.7696263194084167,2950 "Y": 0.455113112926483152951 }2952 ],2953 "Pose": {2954 "Roll": -5.221579551696777,2955 "Yaw": -0.14552511274814606,2956 "Pitch": -3.36470746994018552957 },2958 "Quality": {2959 "Brightness": 85.61800384521484,2960 "Sharpness": 9.9129037857055662961 },2962 "Confidence": 99.96677398681642963 }2964 }2965 },2966 {2967 "Timestamp": 5255,2968 "Person": {2969 "Index": 0,2970 "BoundingBox": {2971 "Width": 0.22265625,2972 "Height": 0.5277777910232544,2973 "Left": 0.484375,2974 "Top": 0.40555554628372192975 }2976 }2977 },2978 {2979 "Timestamp": 5255,2980 "Person": {2981 "Index": 1,2982 "BoundingBox": {2983 "Width": 0.27656251192092896,2984 "Height": 0.4888888895511627,2985 "Left": 0.664843738079071,2986 "Top": 0.036111112684011462987 }2988 }2989 },2990 {2991 "Timestamp": 5296,2992 "Person": {2993 "Index": 0,2994 "BoundingBox": {2995 "Width": 0.22499999403953552,2996 "Height": 0.5180555582046509,2997 "Left": 0.48515623807907104,2998 "Top": 0.41666665673255922999 }3000 }3001 },3002 {3003 "Timestamp": 5296,3004 "Person": {3005 "Index": 1,3006 "BoundingBox": {3007 "Width": 0.3570312559604645,3008 "Height": 0.5972222089767456,3009 "Left": 0.60546875,3010 "Top": 0.043055556714534763011 }3012 }3013 },3014 {3015 "Timestamp": 5380,3016 "Person": {3017 "Index": 0,3018 "BoundingBox": {3019 "Width": 0.23046875,3020 "Height": 0.5305555462837219,3021 "Left": 0.47968751192092896,3022 "Top": 0.408333331346511843023 },3024 "Face": {3025 "BoundingBox": {3026 "Width": 0.038664914667606354,3027 "Height": 0.07443258166313171,3028 "Left": 0.49101972579956055,3029 "Top": 0.43034943938255313030 },3031 "Landmarks": [3032 {3033 "Type": "eyeLeft",3034 "X": 0.5141769647598267,3035 "Y": 0.47066771984100343036 },3037 {3038 "Type": "eyeRight",3039 "X": 0.5174045562744141,3040 "Y": 0.46518668532371523041 },3042 {3043 "Type": "mouthLeft",3044 "X": 0.5169821381568909,3045 "Y": 0.473893344402313233046 },3047 {3048 "Type": "mouthRight",3049 "X": 0.5196335911750793,3050 "Y": 0.46924775838851933051 },3052 {3053 "Type": "nose",3054 "X": 0.5187208652496338,3055 "Y": 0.463698774576187133056 }3057 ],3058 "Pose": {3059 "Roll": -28.032787322998047,3060 "Yaw": -2.7863359451293945,3061 "Pitch": 56.987964630126953062 },3063 "Quality": {3064 "Brightness": 73.72096252441406,3065 "Sharpness": 4.37483692169189453066 },3067 "Confidence": 99.732070922851563068 }3069 }3070 },3071 {3072 "Timestamp": 5380,3073 "Person": {3074 "Index": 1,3075 "BoundingBox": {3076 "Width": 0.3343749940395355,3077 "Height": 0.644444465637207,3078 "Left": 0.6226562261581421,3079 "Top": 0.037500001490116123080 },3081 "Face": {3082 "BoundingBox": {3083 "Width": 0.034773923456668854,3084 "Height": 0.08210054785013199,3085 "Left": 0.6008859872817993,3086 "Top": 0.299892693758010863087 },3088 "Landmarks": [3089 {3090 "Type": "eyeLeft",3091 "X": 0.6119784116744995,3092 "Y": 0.33573094010353093093 },3094 {3095 "Type": "eyeRight",3096 "X": 0.6270468831062317,3097 "Y": 0.330394089221954353098 },3099 {3100 "Type": "mouthLeft",3101 "X": 0.6163426041603088,3102 "Y": 0.36245366930961613103 },3104 {3105 "Type": "mouthRight",3106 "X": 0.628830075263977,3107 "Y": 0.35803300142288213108 },3109 {3110 "Type": "nose",3111 "X": 0.6213515400886536,3112 "Y": 0.34574815630912783113 }3114 ],3115 "Pose": {3116 "Roll": -11.692581176757812,3117 "Yaw": 4.899083137512207,3118 "Pitch": -6.2026371955871583119 },3120 "Quality": {3121 "Brightness": 61.47730255126953,3122 "Sharpness": 5.7756686210632323123 },3124 "Confidence": 99.993026733398443125 }3126 }3127 },3128 {3129 "Timestamp": 5463,3130 "Person": {3131 "Index": 0,3132 "BoundingBox": {3133 "Width": 0.23906250298023224,3134 "Height": 0.5416666865348816,3135 "Left": 0.45625001192092896,3136 "Top": 0.404166668653488163137 }3138 }3139 },3140 {3141 "Timestamp": 5505,3142 "Person": {3143 "Index": 0,3144 "BoundingBox": {3145 "Width": 0.24453124403953552,3146 "Height": 0.5541666746139526,3147 "Left": 0.4476562440395355,3148 "Top": 0.422222226858139043149 }3150 }3151 },3152 {3153 "Timestamp": 5505,3154 "Person": {3155 "Index": 1,3156 "BoundingBox": {3157 "Width": 0.39453125,3158 "Height": 0.8763889074325562,3159 "Left": 0.557812511920929,3160 "Top": 0.108333334326744083161 }3162 }3163 },3164 {3165 "Timestamp": 5588,3166 "Person": {3167 "Index": 0,3168 "BoundingBox": {3169 "Width": 0.2593750059604645,3170 "Height": 0.5680555701255798,3171 "Left": 0.4273437559604645,3172 "Top": 0.390277773141860963173 },3174 "Face": {3175 "BoundingBox": {3176 "Width": 0.03640336915850639,3177 "Height": 0.0911455824971199,3178 "Left": 0.5698896050453186,3179 "Top": 0.279498547315597533180 },3181 "Landmarks": [3182 {3183 "Type": "eyeLeft",3184 "X": 0.5820646286010742,3185 "Y": 0.31634545326232913186 },3187 {3188 "Type": "eyeRight",3189 "X": 0.599153459072113,3190 "Y": 0.311556458473205573191 },3192 {3193 "Type": "mouthLeft",3194 "X": 0.5862668752670288,3195 "Y": 0.34757536649703983196 },3197 {3198 "Type": "mouthRight",3199 "X": 0.6004267334938049,3200 "Y": 0.343569666147232063201 },3202 {3203 "Type": "nose",3204 "X": 0.5934475660324097,3205 "Y": 0.32929211854934693206 }3207 ],3208 "Pose": {3209 "Roll": -10.812420845031738,3210 "Yaw": 15.296618461608887,3211 "Pitch": -7.2729663848876953212 },3213 "Quality": {3214 "Brightness": 64.78649139404297,3215 "Sharpness": 5.7756686210632323216 },3217 "Confidence": 99.992538452148443218 }3219 }3220 },3221 {3222 "Timestamp": 5588,3223 "Person": {3224 "Index": 1,3225 "BoundingBox": {3226 "Width": 0.37812501192092896,3227 "Height": 0.7986111044883728,3228 "Left": 0.5609375238418579,3229 "Top": 0.169444441795349123230 }3231 }3232 },3233 {3234 "Timestamp": 5630,3235 "Person": {3236 "Index": 0,3237 "BoundingBox": {3238 "Width": 0.2515625059604645,3239 "Height": 0.581944465637207,3240 "Left": 0.44140625,3241 "Top": 0.366666674613952643242 }3243 }3244 },3245 {3246 "Timestamp": 5630,3247 "Person": {3248 "Index": 1,3249 "BoundingBox": {3250 "Width": 0.38203126192092896,3251 "Height": 0.8166666626930237,3252 "Left": 0.563281238079071,3253 "Top": 0.144444450736045843254 }3255 }3256 },3257 {3258 "Timestamp": 5714,3259 "Person": {3260 "Index": 0,3261 "BoundingBox": {3262 "Width": 0.23828125,3263 "Height": 0.5513888597488403,3264 "Left": 0.4507812559604645,3265 "Top": 0.33055555820465093266 }3267 }3268 },3269 {3270 "Timestamp": 5714,3271 "Person": {3272 "Index": 1,3273 "BoundingBox": {3274 "Width": 0.35234373807907104,3275 "Height": 0.800000011920929,3276 "Left": 0.56640625,3277 "Top": 0.161111116409301763278 }3279 }3280 },3281 {3282 "Timestamp": 5797,3283 "Person": {3284 "Index": 0,3285 "BoundingBox": {3286 "Width": 0.24296875298023224,3287 "Height": 0.5972222089767456,3288 "Left": 0.4429687559604645,3289 "Top": 0.27777779102325443290 },3291 "Face": {3292 "BoundingBox": {3293 "Width": 0.04257044941186905,3294 "Height": 0.10136029869318008,3295 "Left": 0.5444734692573547,3296 "Top": 0.227874308824539183297 },3298 "Landmarks": [3299 {3300 "Type": "eyeLeft",3301 "X": 0.5590259432792664,3302 "Y": 0.26647201180458073303 },3304 {3305 "Type": "eyeRight",3306 "X": 0.5780303478240967,3307 "Y": 0.26425507664680483308 },3309 {3310 "Type": "mouthLeft",3311 "X": 0.5625682473182678,3312 "Y": 0.301196992397308353313 },3314 {3315 "Type": "mouthRight",3316 "X": 0.578314483165741,3317 "Y": 0.29938369989395143318 },3319 {3320 "Type": "nose",3321 "X": 0.5712652802467346,3322 "Y": 0.28179591894149783323 }3324 ],3325 "Pose": {3326 "Roll": -7.376592636108398,3327 "Yaw": 14.951363563537598,3328 "Pitch": -9.7000436782836913329 },3330 "Quality": {3331 "Brightness": 67.63627624511719,3332 "Sharpness": 4.37483692169189453333 },3334 "Confidence": 99.996139526367193335 }3336 }3337 },3338 {3339 "Timestamp": 5797,3340 "Person": {3341 "Index": 1,3342 "BoundingBox": {3343 "Width": 0.3148437440395355,3344 "Height": 0.7888888716697693,3345 "Left": 0.6015625,3346 "Top": 0.191666662693023683347 }3348 }3349 },3350 {3351 "Timestamp": 5839,3352 "Person": {3353 "Index": 0,3354 "BoundingBox": {3355 "Width": 0.21484375,3356 "Height": 0.543055534362793,3357 "Left": 0.4749999940395355,3358 "Top": 0.240277782082557683359 }3360 }3361 },3362 {3363 "Timestamp": 5922,3364 "Person": {3365 "Index": 0,3366 "BoundingBox": {3367 "Width": 0.20468750596046448,3368 "Height": 0.6152777671813965,3369 "Left": 0.46406251192092896,3370 "Top": 0.212500005960464483371 }3372 }3373 },3374 {3375 "Timestamp": 5964,3376 "Person": {3377 "Index": 0,3378 "BoundingBox": {3379 "Width": 0.21406249701976776,3380 "Height": 0.5916666388511658,3381 "Left": 0.4515624940395355,3382 "Top": 0.19444444775581363383 }3384 }3385 },3386 {3387 "Timestamp": 6047,3388 "Person": {3389 "Index": 0,3390 "BoundingBox": {3391 "Width": 0.2867187559604645,3392 "Height": 0.6597222089767456,3393 "Left": 0.35624998807907104,3394 "Top": 0.181944444775581363395 }3396 }3397 },3398 {3399 "Timestamp": 6047,3400 "Person": {3401 "Index": 1,3402 "BoundingBox": {3403 "Width": 0.33515626192092896,3404 "Height": 0.824999988079071,3405 "Left": 0.569531261920929,3406 "Top": 0.1253407 }3408 }3409 },3410 {3411 "Timestamp": 6131,3412 "Person": {3413 "Index": 0,3414 "BoundingBox": {3415 "Width": 0.19609375298023224,3416 "Height": 0.5583333373069763,3417 "Left": 0.45625001192092896,3418 "Top": 0.115277774631977083419 }3420 }3421 },3422 {3423 "Timestamp": 6131,3424 "Person": {3425 "Index": 1,3426 "BoundingBox": {3427 "Width": 0.37031251192092896,3428 "Height": 0.9152777791023254,3429 "Left": 0.561718761920929,3430 "Top": 0.077777780592441563431 }3432 }3433 },3434 {3435 "Timestamp": 6172,3436 "Person": {3437 "Index": 0,3438 "BoundingBox": {3439 "Width": 0.26875001192092896,3440 "Height": 0.7777777910232544,3441 "Left": 0.36796873807907104,3442 "Top": 0.102777779102325443443 },3444 "Face": {3445 "BoundingBox": {3446 "Width": 0.04948682710528374,3447 "Height": 0.10844293981790543,3448 "Left": 0.5258253216743469,3449 "Top": 0.104672558605670933450 },3451 "Landmarks": [3452 {3453 "Type": "eyeLeft",3454 "X": 0.5434542298316956,3455 "Y": 0.14081561565399173456 },3457 {3458 "Type": "eyeRight",3459 "X": 0.5686112642288208,3460 "Y": 0.142335489392280583461 },3462 {3463 "Type": "mouthLeft",3464 "X": 0.546047031879425,3465 "Y": 0.187113761901855473466 },3467 {3468 "Type": "mouthRight",3469 "X": 0.5669066905975342,3470 "Y": 0.18846325576305393471 },3472 {3473 "Type": "nose",3474 "X": 0.5578262805938721,3475 "Y": 0.161290645599365233476 }3477 ],3478 "Pose": {3479 "Roll": 1.301880955696106,3480 "Yaw": 4.013711452484131,3481 "Pitch": 10.1766071319580083482 },3483 "Quality": {3484 "Brightness": 71.74053955078125,3485 "Sharpness": 4.37483692169189453486 },3487 "Confidence": 99.999198913574223488 }3489 }3490 },3491 {3492 "Timestamp": 6172,3493 "Person": {3494 "Index": 1,3495 "BoundingBox": {3496 "Width": 0.33671873807907104,3497 "Height": 0.8833333253860474,3498 "Left": 0.5953124761581421,3499 "Top": 0.106944441795349123500 }3501 }3502 },3503 {3504 "Timestamp": 6798,3505 "Person": {3506 "Index": 0,3507 "Face": {3508 "BoundingBox": {3509 "Width": 0.048214055597782135,3510 "Height": 0.10026143491268158,3511 "Left": 0.6221581697463989,3512 "Top": 0.80732649564743043513 },3514 "Landmarks": [3515 {3516 "Type": "eyeLeft",3517 "X": 0.6292861104011536,3518 "Y": 0.86219811439514163519 },3520 {3521 "Type": "eyeRight",3522 "X": 0.6470410227775574,3523 "Y": 0.85672301054000853524 },3525 {3526 "Type": "mouthLeft",3527 "X": 0.6417182087898254,3528 "Y": 0.90461927652359013529 },3530 {3531 "Type": "mouthRight",3532 "X": 0.6563494205474854,3533 "Y": 0.90112417936325073534 },3535 {3536 "Type": "nose",3537 "X": 0.6352617144584656,3538 "Y": 0.89128357172012333539 }3540 ],3541 "Pose": {3542 "Roll": -15.745201110839844,3543 "Yaw": -44.55478286743164,3544 "Pitch": -7.1870145797729493545 },3546 "Quality": {3547 "Brightness": 88.42955017089844,3548 "Sharpness": 5.7756686210632323549 },3550 "Confidence": 99.956802368164063551 }3552 }3553 },3554 {3555 "Timestamp": 6798,3556 "Person": {3557 "Index": 2,3558 "Face": {3559 "BoundingBox": {3560 "Width": 0.05498943477869034,3561 "Height": 0.10794762521982193,3562 "Left": 0.42208799719810486,3563 "Top": 0.89276438951492313564 },3565 "Landmarks": [3566 {3567 "Type": "eyeLeft",3568 "X": 0.45236659049987793,3569 "Y": 0.92924904823303223570 },3571 {3572 "Type": "eyeRight",3573 "X": 0.4681655466556549,3574 "Y": 0.94848775863647463575 },3576 {3577 "Type": "mouthLeft",3578 "X": 0.4432980418205261,3579 "Y": 0.96789222955703743580 },3581 {3582 "Type": "mouthRight",3583 "X": 0.4561733305454254,3584 "Y": 0.98363292217254643585 },3586 {3587 "Type": "nose",3588 "X": 0.4612167477607727,3589 "Y": 0.95989823341369633590 }3591 ],3592 "Pose": {3593 "Roll": 35.34782791137695,3594 "Yaw": 24.11127471923828,3595 "Pitch": 5.295014858245853596 },3597 "Quality": {3598 "Brightness": 77.0829849243164,3599 "Sharpness": 7.5894498825073243600 },3601 "Confidence": 99.976760864257813602 }3603 }3604 },3605 {3606 "Timestamp": 6923,3607 "Person": {3608 "Index": 3,3609 "BoundingBox": {3610 "Width": 0.16562500596046448,3611 "Height": 0.4694444537162781,3612 "Left": 0.828125,3613 "Top": 0.50555557012557983614 }3615 }3616 },3617 {3618 "Timestamp": 6965,3619 "Person": {3620 "Index": 2,3621 "Face": {3622 "BoundingBox": {3623 "Width": 0.05522928386926651,3624 "Height": 0.09572380781173706,3625 "Left": 0.3745533525943756,3626 "Top": 0.91637319326400763627 },3628 "Landmarks": [3629 {3630 "Type": "eyeLeft",3631 "X": 0.4027303159236908,3632 "Y": 0.95382046699523933633 },3634 {3635 "Type": "eyeRight",3636 "X": 0.41985735297203064,3637 "Y": 0.97123843431472783638 },3639 {3640 "Type": "mouthLeft",3641 "X": 0.39297324419021606,3642 "Y": 0.99472564458847053643 },3644 {3645 "Type": "mouthRight",3646 "X": 0.4069441556930542,3647 "Y": 1.00873100757598883648 },3649 {3650 "Type": "nose",3651 "X": 0.41130369901657104,3652 "Y": 0.98648965358734133653 }3654 ],3655 "Pose": {3656 "Roll": 30.485004425048828,3657 "Yaw": 26.751859664916992,3658 "Pitch": -3.4476463794708253659 },3660 "Quality": {3661 "Brightness": 75.95707702636719,3662 "Sharpness": 9.9129037857055663663 },3664 "Confidence": 99.981826782226563665 }3666 }3667 },3668 {3669 "Timestamp": 6965,3670 "Person": {3671 "Index": 3,3672 "BoundingBox": {3673 "Width": 0.14453125,3674 "Height": 0.43888887763023376,3675 "Left": 0.848437488079071,3676 "Top": 0.55138885974884033677 },3678 "Face": {3679 "BoundingBox": {3680 "Width": 0.058472536504268646,3681 "Height": 0.1460423767566681,3682 "Left": 0.9163724780082703,3683 "Top": 0.57424360513687133684 },3685 "Landmarks": [3686 {3687 "Type": "eyeLeft",3688 "X": 0.9345521926879883,3689 "Y": 0.63955277204513553690 },3691 {3692 "Type": "eyeRight",3693 "X": 0.9610642790794373,3694 "Y": 0.63140547275543213695 },3696 {3697 "Type": "mouthLeft",3698 "X": 0.9404792785644531,3699 "Y": 0.69066113233566283700 },3701 {3702 "Type": "mouthRight",3703 "X": 0.9624988436698914,3704 "Y": 0.68381386995315553705 },3706 {3707 "Type": "nose",3708 "X": 0.9511632323265076,3709 "Y": 0.67070633172988893710 }3711 ],3712 "Pose": {3713 "Roll": -8.061651229858398,3714 "Yaw": 6.070941925048828,3715 "Pitch": -9.730126380920413716 },3717 "Quality": {3718 "Brightness": 80.75830841064453,3719 "Sharpness": 7.5894498825073243720 },3721 "Confidence": 99.991691589355473722 }3723 }3724 },3725 {3726 "Timestamp": 6965,3727 "Person": {3728 "Index": 4,3729 "BoundingBox": {3730 "Width": 0.20781250298023224,3731 "Height": 0.4097222089767456,3732 "Left": 0.678906261920929,3733 "Top": 0.55555558204650883734 }3735 }3736 },3737 {3738 "Timestamp": 7048,3739 "Person": {3740 "Index": 3,3741 "BoundingBox": {3742 "Width": 0.15937499701976776,3743 "Height": 0.4333333373069763,3744 "Left": 0.83203125,3745 "Top": 0.55277776718139653746 }3747 }3748 },3749 {3750 "Timestamp": 7048,3751 "Person": {3752 "Index": 4,3753 "BoundingBox": {3754 "Width": 0.35624998807907104,3755 "Height": 0.7986111044883728,3756 "Left": 0.610156238079071,3757 "Top": 0.20138889551162723758 }3759 }3760 },3761 {3762 "Timestamp": 7132,3763 "Person": {3764 "Index": 4,3765 "BoundingBox": {3766 "Width": 0.2867187559604645,3767 "Height": 0.5027777552604675,3768 "Left": 0.6742187738418579,3769 "Top": 0.47499999403953553770 }3771 }3772 },3773 {3774 "Timestamp": 7173,3775 "Person": {3776 "Index": 0,3777 "Face": {3778 "BoundingBox": {3779 "Width": 0.027690839022397995,3780 "Height": 0.05909915640950203,3781 "Left": 0.4230926036834717,3782 "Top": 0.91406959295272833783 },3784 "Landmarks": [3785 {3786 "Type": "eyeLeft",3787 "X": 0.4392801821231842,3788 "Y": 0.93830174207687383789 },3790 {3791 "Type": "eyeRight",3792 "X": 0.4362235963344574,3793 "Y": 0.93607634305953983794 },3795 {3796 "Type": "mouthLeft",3797 "X": 0.4417624771595001,3798 "Y": 0.9319699406623843799 },3800 {3801 "Type": "mouthRight",3802 "X": 0.43924084305763245,3803 "Y": 0.93017953634262083804 },3805 {3806 "Type": "nose",3807 "X": 0.439767986536026,3808 "Y": 0.92856293916702273809 }3810 ],3811 "Pose": {3812 "Roll": -163.77938842773438,3813 "Yaw": 28.327228546142578,3814 "Pitch": -53.8171386718753815 },3816 "Quality": {3817 "Brightness": 84.97114562988281,3818 "Sharpness": 3.30185699462890623819 },3820 "Confidence": 87.515731811523443821 }3822 }3823 },3824 {3825 "Timestamp": 7173,3826 "Person": {3827 "Index": 3,3828 "Face": {3829 "BoundingBox": {3830 "Width": 0.060743141919374466,3831 "Height": 0.145915225148201,3832 "Left": 0.8467386960983276,3833 "Top": 0.60071766376495363834 },3835 "Landmarks": [3836 {3837 "Type": "eyeLeft",3838 "X": 0.8639781475067139,3839 "Y": 0.66620248556137083840 },3841 {3842 "Type": "eyeRight",3843 "X": 0.891381561756134,3844 "Y": 0.65827327966690063845 },3846 {3847 "Type": "mouthLeft",3848 "X": 0.8688970804214478,3849 "Y": 0.71758830547332763850 },3851 {3852 "Type": "mouthRight",3853 "X": 0.8917104601860046,3854 "Y": 0.71074539422988893855 },3856 {3857 "Type": "nose",3858 "X": 0.8814225196838379,3859 "Y": 0.69876474142074583860 }3861 ],3862 "Pose": {3863 "Roll": -8.287321090698242,3864 "Yaw": 1.6398332118988037,3865 "Pitch": -15.7318677902221683866 },3867 "Quality": {3868 "Brightness": 79.80583190917969,3869 "Sharpness": 12.8487644195556643870 },3871 "Confidence": 99.989738464355473872 }3873 }3874 },3875 {3876 "Timestamp": 7173,3877 "Person": {3878 "Index": 4,3879 "BoundingBox": {3880 "Width": 0.2679687440395355,3881 "Height": 0.5027777552604675,3882 "Left": 0.671093761920929,3883 "Top": 0.463888883590698243884 }3885 }3886 },3887 {3888 "Timestamp": 7257,3889 "Person": {3890 "Index": 4,3891 "BoundingBox": {3892 "Width": 0.25078123807907104,3893 "Height": 0.5555555820465088,3894 "Left": 0.6781250238418579,3895 "Top": 0.40972220897674563896 }3897 }3898 },3899 {3900 "Timestamp": 7298,3901 "Person": {3902 "Index": 4,3903 "BoundingBox": {3904 "Width": 0.2421875,3905 "Height": 0.5569444298744202,3906 "Left": 0.6812499761581421,3907 "Top": 0.40972220897674563908 }3909 }3910 },3911 {3912 "Timestamp": 7382,3913 "Person": {3914 "Index": 4,3915 "BoundingBox": {3916 "Width": 0.24453124403953552,3917 "Height": 0.45277777314186096,3918 "Left": 0.675000011920929,3919 "Top": 0.52777779102325443920 }3921 }3922 },3923 {3924 "Timestamp": 7465,3925 "Person": {3926 "Index": 4,3927 "BoundingBox": {3928 "Width": 0.22812500596046448,3929 "Height": 0.43888887763023376,3930 "Left": 0.6617187261581421,3931 "Top": 0.54166668653488163932 }3933 }3934 },3935 {3936 "Timestamp": 7507,3937 "Person": {3938 "Index": 4,3939 "BoundingBox": {3940 "Width": 0.23359374701976776,3941 "Height": 0.4513888955116272,3942 "Left": 0.65234375,3943 "Top": 0.53333336114883423944 }3945 }3946 },3947 {3948 "Timestamp": 7799,3949 "Person": {3950 "Index": 0,3951 "Face": {3952 "BoundingBox": {3953 "Width": 0.04644637182354927,3954 "Height": 0.10233442485332489,3955 "Left": 0.3203994631767273,3956 "Top": 0.89445596933364873957 },3958 "Landmarks": [3959 {3960 "Type": "eyeLeft",3961 "X": 0.3288017511367798,3962 "Y": 0.95226287841796883963 },3964 {3965 "Type": "eyeRight",3966 "X": 0.344523549079895,3967 "Y": 0.94601792097091673968 },3969 {3970 "Type": "mouthLeft",3971 "X": 0.34035396575927734,3972 "Y": 0.99072122573852543973 },3974 {3975 "Type": "mouthRight",3976 "X": 0.35325440764427185,3977 "Y": 0.98652666807174683978 },3979 {3980 "Type": "nose",3981 "X": 0.3334324359893799,3982 "Y": 0.97862076759338383983 }3984 ],3985 "Pose": {3986 "Roll": -17.432144165039062,3987 "Yaw": -45.897064208984375,3988 "Pitch": -6.437791824340823989 },3990 "Quality": {3991 "Brightness": 85.19026947021484,3992 "Sharpness": 4.37483692169189453993 },3994 "Confidence": 99.693771362304693995 }3996 }3997 },3998 {3999 "Timestamp": 7841,4000 "Person": {4001 "Index": 4,4002 "BoundingBox": {4003 "Width": 0.37031251192092896,4004 "Height": 0.6069444417953491,4005 "Left": 0.5835937261581421,4006 "Top": 0.348611116409301764007 }4008 }4009 },4010 {4011 "Timestamp": 7924,4012 "Person": {4013 "Index": 4,4014 "BoundingBox": {4015 "Width": 0.37109375,4016 "Height": 0.6472222208976746,4017 "Left": 0.550000011920929,4018 "Top": 0.32638889551162724019 }4020 }4021 },4022 {4023 "Timestamp": 7966,4024 "Person": {4025 "Index": 3,4026 "Face": {4027 "BoundingBox": {4028 "Width": 0.05199394375085831,4029 "Height": 0.11917521059513092,4030 "Left": 0.6039353609085083,4031 "Top": 0.67693471908569344032 },4033 "Landmarks": [4034 {4035 "Type": "eyeLeft",4036 "X": 0.6183697581291199,4037 "Y": 0.71261829137802124038 },4039 {4040 "Type": "eyeRight",4041 "X": 0.6425990462303162,4042 "Y": 0.70717513561248784043 },4044 {4045 "Type": "mouthLeft",4046 "X": 0.6225855946540833,4047 "Y": 0.76238811016082764048 },4049 {4050 "Type": "mouthRight",4051 "X": 0.6427246332168579,4052 "Y": 0.75775998830795294053 },4054 {4055 "Type": "nose",4056 "X": 0.634042501449585,4057 "Y": 0.74184018373489384058 }4059 ],4060 "Pose": {4061 "Roll": -5.685927867889404,4062 "Yaw": -3.6042561531066895,4063 "Pitch": 2.23902225494384774064 },4065 "Quality": {4066 "Brightness": 82.12335968017578,4067 "Sharpness": 7.5894498825073244068 },4069 "Confidence": 96.539657592773444070 }4071 }4072 },4073 {4074 "Timestamp": 7966,4075 "Person": {4076 "Index": 4,4077 "BoundingBox": {4078 "Width": 0.3726562559604645,4079 "Height": 0.7055555582046509,4080 "Left": 0.56640625,4081 "Top": 0.223611116409301764082 }4083 }4084 },4085 {4086 "Timestamp": 8133,4087 "Person": {4088 "Index": 3,4089 "BoundingBox": {4090 "Width": 0.17499999701976776,4091 "Height": 0.35555556416511536,4092 "Left": 0.48906248807907104,4093 "Top": 0.6444444656372074094 }4095 }4096 },4097 {4098 "Timestamp": 8174,4099 "Person": {4100 "Index": 0,4101 "Face": {4102 "BoundingBox": {4103 "Width": 0.04726903513073921,4104 "Height": 0.10241851955652237,4105 "Left": 0.21414318680763245,4106 "Top": 0.88595622777938844107 },4108 "Landmarks": [4109 {4110 "Type": "eyeLeft",4111 "X": 0.22199979424476624,4112 "Y": 0.94538390636444094113 },4114 {4115 "Type": "eyeRight",4116 "X": 0.23870760202407837,4117 "Y": 0.93787282705307014118 },4119 {4120 "Type": "mouthLeft",4121 "X": 0.23598554730415344,4122 "Y": 0.9894491434097294123 },4124 {4125 "Type": "mouthRight",4126 "X": 0.2496291995048523,4127 "Y": 0.98436135053634644128 },4129 {4130 "Type": "nose",4131 "X": 0.22785639762878418,4132 "Y": 0.97535651922225954133 }4134 ],4135 "Pose": {4136 "Roll": -20.21025848388672,4137 "Yaw": -48.294368743896484,4138 "Pitch": -5.6799225807189944139 },4140 "Quality": {4141 "Brightness": 84.18424224853516,4142 "Sharpness": 4.37483692169189454143 },4144 "Confidence": 73.662338256835944145 }4146 }4147 },4148 {4149 "Timestamp": 8174,4150 "Person": {4151 "Index": 3,4152 "BoundingBox": {4153 "Width": 0.17890624701976776,4154 "Height": 0.38333332538604736,4155 "Left": 0.4671874940395355,4156 "Top": 0.61666667461395264157 },4158 "Face": {4159 "BoundingBox": {4160 "Width": 0.055931709706783295,4161 "Height": 0.14722035825252533,4162 "Left": 0.5506488084793091,4163 "Top": 0.65352874994277954164 },4165 "Landmarks": [4166 {4167 "Type": "eyeLeft",4168 "X": 0.567803144454956,4169 "Y": 0.71879017353057864170 },4171 {4172 "Type": "eyeRight",4173 "X": 0.5924705862998962,4174 "Y": 0.71311736106872564175 },4176 {4177 "Type": "mouthLeft",4178 "X": 0.5719995498657227,4179 "Y": 0.7679313421249394180 },4181 {4182 "Type": "mouthRight",4183 "X": 0.5924400687217712,4184 "Y": 0.76312434673309334185 },4186 {4187 "Type": "nose",4188 "X": 0.5826202630996704,4189 "Y": 0.75047081708908084190 }4191 ],4192 "Pose": {4193 "Roll": -5.1735382080078125,4194 "Yaw": 3.7881851196289062,4195 "Pitch": -6.00276899337768554196 },4197 "Quality": {4198 "Brightness": 80.7684326171875,4199 "Sharpness": 12.8487644195556644200 },4201 "Confidence": 99.993667602539064202 }4203 }4204 },4205 {4206 "Timestamp": 8383,4207 "Person": {4208 "Index": 5,4209 "Face": {4210 "BoundingBox": {4211 "Width": 0.05955848842859268,4212 "Height": 0.1423260122537613,4213 "Left": 0.6494315266609192,4214 "Top": 0.76284068822860724215 },4216 "Landmarks": [4217 {4218 "Type": "eyeLeft",4219 "X": 0.6663081049919128,4220 "Y": 0.81655496358871464221 },4222 {4223 "Type": "eyeRight",4224 "X": 0.6935001015663147,4225 "Y": 0.81267470121383674226 },4227 {4228 "Type": "mouthLeft",4229 "X": 0.6702809929847717,4230 "Y": 0.87467628717422494231 },4232 {4233 "Type": "mouthRight",4234 "X": 0.692720890045166,4235 "Y": 0.87137281894683844236 },4237 {4238 "Type": "nose",4239 "X": 0.6824431419372559,4240 "Y": 0.85159456729888924241 }4242 ],4243 "Pose": {4244 "Roll": -2.519601583480835,4245 "Yaw": 3.8300745487213135,4246 "Pitch": -2.41445088386535644247 },4248 "Quality": {4249 "Brightness": 78.04981231689453,4250 "Sharpness": 5.7756686210632324251 },4252 "Confidence": 99.724075317382814253 }4254 }4255 },4256 {4257 "Timestamp": 9050,4258 "Person": {4259 "Index": 6,4260 "BoundingBox": {4261 "Width": 0.38749998807907104,4262 "Height": 0.6236110925674438,4263 "Left": 0.31953126192092896,4264 "Top": 0.0111111113801598554265 }4266 }4267 },4268 {4269 "Timestamp": 9092,4270 "Person": {4271 "Index": 6,4272 "BoundingBox": {4273 "Width": 0.520312488079071,4274 "Height": 0.855555534362793,4275 "Left": 0.20546874403953552,4276 "Top": 04277 }4278 }4279 },4280 {4281 "Timestamp": 9259,4282 "Person": {4283 "Index": 6,4284 "BoundingBox": {4285 "Width": 0.3726562559604645,4286 "Height": 0.5902777910232544,4287 "Left": 0.3804687559604645,4288 "Top": 0.00555555569007992744289 }4290 }4291 },4292 {4293 "Timestamp": 9759,4294 "Person": {4295 "Index": 6,4296 "BoundingBox": {4297 "Width": 0.35546875,4298 "Height": 0.8125,4299 "Left": 0.520312488079071,4300 "Top": 0.119444444775581364301 }4302 }4303 },4304 {4305 "Timestamp": 9843,4306 "Person": {4307 "Index": 6,4308 "BoundingBox": {4309 "Width": 0.516406238079071,4310 "Height": 0.7666666507720947,4311 "Left": 0.3515625,4312 "Top": 0.140277773141860964313 }4314 }4315 },4316 {4317 "Timestamp": 10093,4318 "Person": {4319 "Index": 6,4320 "BoundingBox": {4321 "Width": 0.18671874701976776,4322 "Height": 0.6305555701255798,4323 "Left": 0.58984375,4324 "Top": 0.304166674613952644325 }4326 }4327 },4328 {4329 "Timestamp": 10760,4330 "Person": {4331 "Index": 0,4332 "Face": {4333 "BoundingBox": {4334 "Width": 0.11707524955272675,4335 "Height": 0.4222012758255005,4336 "Left": 0.8929864764213562,4337 "Top": 0.56573021411895754338 },4339 "Landmarks": [4340 {4341 "Type": "eyeLeft",4342 "X": 0.9580000042915344,4343 "Y": 0.65632963180541994344 },4345 {4346 "Type": "eyeRight",4347 "X": 1.0154261589050293,4348 "Y": 0.70335441827774054349 },4350 {4351 "Type": "mouthLeft",4352 "X": 0.9423900842666626,4353 "Y": 0.82672256231307984354 },4355 {4356 "Type": "mouthRight",4357 "X": 0.9882100820541382,4358 "Y": 0.86569076776504524359 },4360 {4361 "Type": "nose",4362 "X": 0.9984792470932007,4363 "Y": 0.75159531831741334364 }4365 ],4366 "Pose": {4367 "Roll": 23.850677490234375,4368 "Yaw": 35.94197463989258,4369 "Pitch": 3.86437368392944344370 },4371 "Quality": {4372 "Brightness": 64.37232208251953,4373 "Sharpness": 32.208034515380864374 },4375 "Confidence": 96.89597320556644376 }4377 }4378 },4379 {4380 "Timestamp": 10927,4381 "Person": {4382 "Index": 3,4383 "BoundingBox": {4384 "Width": 0.17890624701976776,4385 "Height": 0.5236111283302307,4386 "Left": 0.813281238079071,4387 "Top": 0.47638890147209174388 }4389 }4390 },4391 {4392 "Timestamp": 10969,4393 "Person": {4394 "Index": 7,4395 "BoundingBox": {4396 "Width": 0.33203125,4397 "Height": 0.5597222447395325,4398 "Left": 0.26171875,4399 "Top": 0.0041666668839752674400 }4401 }4402 },4403 {4404 "Timestamp": 11052,4405 "Person": {4406 "Index": 7,4407 "BoundingBox": {4408 "Width": 0.31640625,4409 "Height": 0.5444444417953491,4410 "Left": 0.2710937559604645,4411 "Top": 0.00694444449618458754412 }4413 }4414 },4415 {4416 "Timestamp": 11094,4417 "Person": {4418 "Index": 7,4419 "BoundingBox": {4420 "Width": 0.3101562559604645,4421 "Height": 0.5333333611488342,4422 "Left": 0.2757812440395355,4423 "Top": 0.00138888892251998194424 }4425 }4426 },4427 {4428 "Timestamp": 11177,4429 "Person": {4430 "Index": 0,4431 "Face": {4432 "BoundingBox": {4433 "Width": 0.04811253398656845,4434 "Height": 0.07184181362390518,4435 "Left": 0.5431509017944336,4436 "Top": 0.276854872703552254437 },4438 "Landmarks": [4439 {4440 "Type": "eyeLeft",4441 "X": 0.5600852966308594,4442 "Y": 0.297404289245605474443 },4444 {4445 "Type": "eyeRight",4446 "X": 0.5603433847427368,4447 "Y": 0.29341387748718264448 },4449 {4450 "Type": "mouthLeft",4451 "X": 0.5632725358009338,4452 "Y": 0.300020605325698854453 },4454 {4455 "Type": "mouthRight",4456 "X": 0.5633618831634521,4457 "Y": 0.296725183725357064458 },4459 {4460 "Type": "nose",4461 "X": 0.5622379779815674,4462 "Y": 0.29144099354743964463 }4464 ],4465 "Pose": {4466 "Roll": -123.54114532470703,4467 "Yaw": 39.83604431152344,4468 "Pitch": -80.779411315917974469 },4470 "Quality": {4471 "Brightness": 71.38311767578125,4472 "Sharpness": 9.9129037857055664473 },4474 "Confidence": 99.741935729980474475 }4476 }4477 },4478 {4479 "Timestamp": 11177,4480 "Person": {4481 "Index": 8,4482 "BoundingBox": {4483 "Width": 0.55859375,4484 "Height": 0.9555555582046509,4485 "Left": 0.2554687559604645,4486 "Top": 0.00694444449618458754487 }4488 }4489 },4490 {4491 "Timestamp": 11261,4492 "Person": {4493 "Index": 8,4494 "BoundingBox": {4495 "Width": 0.5687500238418579,4496 "Height": 0.9750000238418579,4497 "Left": 0.24687500298023224,4498 "Top": 04499 }4500 }4501 },4502 {4503 "Timestamp": 11386,4504 "Person": {4505 "Index": 0,4506 "Face": {4507 "BoundingBox": {4508 "Width": 0.03864855691790581,4509 "Height": 0.0571310892701149,4510 "Left": 0.5077467560768127,4511 "Top": 0.099410817027091984512 },4513 "Landmarks": [4514 {4515 "Type": "eyeLeft",4516 "X": 0.5347394943237305,4517 "Y": 0.120069935917854314518 },4519 {4520 "Type": "eyeRight",4521 "X": 0.536224365234375,4522 "Y": 0.13625398278236394523 },4524 {4525 "Type": "mouthLeft",4526 "X": 0.5252227187156677,4527 "Y": 0.123551808297634124528 },4529 {4530 "Type": "mouthRight",4531 "X": 0.5264511108398438,4532 "Y": 0.13689218461513524533 },4534 {4535 "Type": "nose",4536 "X": 0.5323290824890137,4537 "Y": 0.126964583992958074538 }4539 ],4540 "Pose": {4541 "Roll": 78.07648468017578,4542 "Yaw": -22.98470115661621,4543 "Pitch": 18.2494049072265624544 },4545 "Quality": {4546 "Brightness": 87.46268463134766,4547 "Sharpness": 7.5894498825073244548 },4549 "Confidence": 99.987854003906254550 }4551 }4552 },4553 {4554 "Timestamp": 11594,4555 "Person": {4556 "Index": 0,4557 "Face": {4558 "BoundingBox": {4559 "Width": 0.04234271124005318,4560 "Height": 0.055461544543504715,4561 "Left": 0.5338243246078491,4562 "Top": 0.375470995903015144563 },4564 "Landmarks": [4565 {4566 "Type": "eyeLeft",4567 "X": 0.5613256096839905,4568 "Y": 0.394411504268646244569 },4570 {4571 "Type": "eyeRight",4572 "X": 0.5630754232406616,4573 "Y": 0.41918000578880314574 },4575 {4576 "Type": "mouthLeft",4577 "X": 0.5466970801353455,4578 "Y": 0.399622529745101934579 },4580 {4581 "Type": "mouthRight",4582 "X": 0.5482088923454285,4583 "Y": 0.42019042372703554584 },4585 {4586 "Type": "nose",4587 "X": 0.5546690225601196,4588 "Y": 0.41253253817558294589 }4590 ],4591 "Pose": {4592 "Roll": 80.8388442993164,4593 "Yaw": 17.135784149169922,4594 "Pitch": -14.2777481079101564595 },4596 "Quality": {4597 "Brightness": 73.56141662597656,4598 "Sharpness": 7.5894498825073244599 },4600 "Confidence": 99.95700836181644601 }4602 }4603 },4604 {4605 "Timestamp": 11594,4606 "Person": {4607 "Index": 8,4608 "BoundingBox": {4609 "Width": 0.5101562738418579,4610 "Height": 0.8527777791023254,4611 "Left": 0.29374998807907104,4612 "Top": 0.140277773141860964613 }4614 }4615 },4616 {4617 "Timestamp": 11761,4618 "Person": {4619 "Index": 0,4620 "BoundingBox": {4621 "Width": 0.04006447643041611,4622 "Height": 0.0534101277589798,4623 "Left": 0.5342368483543396,4624 "Top": 0.43570140004158024625 },4626 "Face": {4627 "BoundingBox": {4628 "Width": 0.034920357167720795,4629 "Height": 0.052538447082042694,4630 "Left": 0.4869796335697174,4631 "Top": 0.25015014410018924632 },4633 "Landmarks": [4634 {4635 "Type": "eyeLeft",4636 "X": 0.5069884657859802,4637 "Y": 0.265855938196182254638 },4639 {4640 "Type": "eyeRight",4641 "X": 0.5137860178947449,4642 "Y": 0.284909754991531374643 },4644 {4645 "Type": "mouthLeft",4646 "X": 0.4959756135940552,4647 "Y": 0.28165054321289064648 },4649 {4650 "Type": "mouthRight",4651 "X": 0.5015719532966614,4652 "Y": 0.297327578067779544653 },4654 {4655 "Type": "nose",4656 "X": 0.5060243010520935,4657 "Y": 0.28439426422119144658 }4659 ],4660 "Pose": {4661 "Roll": 56.8336067199707,4662 "Yaw": 14.896940231323242,4663 "Pitch": -0.84582847356796264664 },4665 "Quality": {4666 "Brightness": 89.7229995727539,4667 "Sharpness": 7.5894498825073244668 },4669 "Confidence": 99.962295532226564670 }4671 }4672 },4673 {4674 "Timestamp": 11761,4675 "Person": {4676 "Index": 9,4677 "BoundingBox": {4678 "Width": 0.034920357167720795,4679 "Height": 0.052538447082042694,4680 "Left": 0.4869796335697174,4681 "Top": 0.25015014410018924682 }4683 }4684 },4685 {4686 "Timestamp": 11970,4687 "Person": {4688 "Index": 0,4689 "BoundingBox": {4690 "Width": 0.027987385168671608,4691 "Height": 0.08062947541475296,4692 "Left": 0.3141838610172272,4693 "Top": 0.83232516050338754694 },4695 "Face": {4696 "BoundingBox": {4697 "Width": 0.03928985446691513,4698 "Height": 0.05397847667336464,4699 "Left": 0.5353791117668152,4700 "Top": 0.45818117260932924701 },4702 "Landmarks": [4703 {4704 "Type": "eyeLeft",4705 "X": 0.5609893798828125,4706 "Y": 0.48454427719116214707 },4708 {4709 "Type": "eyeRight",4710 "X": 0.5659866333007812,4711 "Y": 0.50315439701080324712 },4713 {4714 "Type": "mouthLeft",4715 "X": 0.5476057529449463,4716 "Y": 0.49700272083282474717 },4718 {4719 "Type": "mouthRight",4720 "X": 0.5517750382423401,4721 "Y": 0.51211100816726684722 },4723 {4724 "Type": "nose",4725 "X": 0.5576853156089783,4726 "Y": 0.50631642341613774727 }4728 ],4729 "Pose": {4730 "Roll": 61.63731384277344,4731 "Yaw": 33.956111907958984,4732 "Pitch": -14.4247283935546884733 },4734 "Quality": {4735 "Brightness": 71.34379577636719,4736 "Sharpness": 9.9129037857055664737 },4738 "Confidence": 99.323226928710944739 }4740 }4741 },4742 {4743 "Timestamp": 11970,4744 "Person": {4745 "Index": 10,4746 "Face": {4747 "BoundingBox": {4748 "Width": 0.0322083942592144,4749 "Height": 0.053011998534202576,4750 "Left": 0.47977280616760254,4751 "Top": 0.316246241331100464752 },4753 "Landmarks": [4754 {4755 "Type": "eyeLeft",4756 "X": 0.49710965156555176,4757 "Y": 0.33563768863677984758 },4759 {4760 "Type": "eyeRight",4761 "X": 0.506341814994812,4762 "Y": 0.350712478160858154763 },4764 {4765 "Type": "mouthLeft",4766 "X": 0.4879996180534363,4767 "Y": 0.354590445756912234768 },4769 {4770 "Type": "mouthRight",4771 "X": 0.49569767713546753,4772 "Y": 0.36692884564399724773 },4774 {4775 "Type": "nose",4776 "X": 0.4981376826763153,4777 "Y": 0.35692635178565984778 }4779 ],4780 "Pose": {4781 "Roll": 39.61853790283203,4782 "Yaw": 23.480173110961914,4783 "Pitch": -19.969692230224614784 },4785 "Quality": {4786 "Brightness": 88.91824340820312,4787 "Sharpness": 7.5894498825073244788 },4789 "Confidence": 99.992622375488284790 }4791 }4792 },4793 {4794 "Timestamp": 11970,4795 "Person": {4796 "Index": 11,4797 "BoundingBox": {4798 "Width": 0.03928985446691513,4799 "Height": 0.05397847667336464,4800 "Left": 0.5353791117668152,4801 "Top": 0.45818117260932924802 }4803 }4804 },4805 {4806 "Timestamp": 12053,4807 "Person": {4808 "Index": 0,4809 "BoundingBox": {4810 "Width": 0.25859373807907104,4811 "Height": 0.44305557012557983,4812 "Left": 0.33984375,4813 "Top": 0.247222214937210084814 }4815 }4816 },4817 {4818 "Timestamp": 12095,4819 "Person": {4820 "Index": 0,4821 "BoundingBox": {4822 "Width": 0.2578125,4823 "Height": 0.46388888359069824,4824 "Left": 0.33984375,4825 "Top": 0.26388889551162724826 }4827 }4828 },4829 {4830 "Timestamp": 12178,4831 "Person": {4832 "Index": 0,4833 "BoundingBox": {4834 "Width": 0.23671874403953552,4835 "Height": 0.4555555582046509,4836 "Left": 0.3492187559604645,4837 "Top": 0.28888890147209174838 },4839 "Face": {4840 "BoundingBox": {4841 "Width": 0.026874255388975143,4842 "Height": 0.04920319467782974,4843 "Left": 0.4695228040218353,4844 "Top": 0.38825500011444094845 },4846 "Landmarks": [4847 {4848 "Type": "eyeLeft",4849 "X": 0.4846154749393463,4850 "Y": 0.407129108905792244851 },4852 {4853 "Type": "eyeRight",4854 "X": 0.4938095808029175,4855 "Y": 0.41650709509849554856 },4857 {4858 "Type": "mouthLeft",4859 "X": 0.47869616746902466,4860 "Y": 0.425917506217956544861 },4862 {4863 "Type": "mouthRight",4864 "X": 0.4863395392894745,4865 "Y": 0.43354865908622744866 },4867 {4868 "Type": "nose",4869 "X": 0.4871971011161804,4870 "Y": 0.424094140529632574871 }4872 ],4873 "Pose": {4874 "Roll": 27.8956356048584,4875 "Yaw": 22.576444625854492,4876 "Pitch": -19.825540542602544877 },4878 "Quality": {4879 "Brightness": 86.56822204589844,4880 "Sharpness": 9.9129037857055664881 },4882 "Confidence": 99.878280639648444883 }4884 }4885 },4886 {4887 "Timestamp": 12262,4888 "Person": {4889 "Index": 0,4890 "BoundingBox": {4891 "Width": 0.20546874403953552,4892 "Height": 0.4444444477558136,4893 "Left": 0.3539062440395355,4894 "Top": 0.34444445371627814895 }4896 }4897 },4898 {4899 "Timestamp": 12387,4900 "Person": {4901 "Index": 7,4902 "BoundingBox": {4903 "Width": 0.18281249701976776,4904 "Height": 0.2958333194255829,4905 "Left": 0.49140626192092896,4906 "Top": 0.341666668653488164907 }4908 }4909 },4910 {4911 "Timestamp": 12512,4912 "Person": {4913 "Index": 0,4914 "BoundingBox": {4915 "Width": 0.22109374403953552,4916 "Height": 0.46388888359069824,4917 "Left": 0.3460937440395355,4918 "Top": 0.31254919 }4920 }4921 },4922 {4923 "Timestamp": 12595,4924 "Person": {4925 "Index": 0,4926 "BoundingBox": {4927 "Width": 0.25,4928 "Height": 0.4749999940395355,4929 "Left": 0.34296876192092896,4930 "Top": 0.276388883590698244931 }4932 }4933 },4934 {4935 "Timestamp": 12637,4936 "Person": {4937 "Index": 0,4938 "BoundingBox": {4939 "Width": 0.25390625,4940 "Height": 0.4541666805744171,4941 "Left": 0.33984375,4942 "Top": 0.262499988079071044943 }4944 }4945 },4946 {4947 "Timestamp": 12762,4948 "Person": {4949 "Index": 0,4950 "Face": {4951 "BoundingBox": {4952 "Width": 0.035212136805057526,4953 "Height": 0.057547591626644135,4954 "Left": 0.4779837131500244,4955 "Top": 0.31575664877891544956 },4957 "Landmarks": [4958 {4959 "Type": "eyeLeft",4960 "X": 0.4978446364402771,4961 "Y": 0.33602663874626164962 },4963 {4964 "Type": "eyeRight",4965 "X": 0.5079450011253357,4966 "Y": 0.354054838418960574967 },4968 {4969 "Type": "mouthLeft",4970 "X": 0.48688337206840515,4971 "Y": 0.356427729129791264972 },4973 {4974 "Type": "mouthRight",4975 "X": 0.49533170461654663,4976 "Y": 0.371247202157974244977 },4978 {4979 "Type": "nose",4980 "X": 0.49767833948135376,4981 "Y": 0.359687298536300664982 }4983 ],4984 "Pose": {4985 "Roll": 43.557342529296875,4986 "Yaw": 19.350875854492188,4987 "Pitch": -18.8571186065673834988 },4989 "Quality": {4990 "Brightness": 86.50816345214844,4991 "Sharpness": 7.5894498825073244992 },4993 "Confidence": 99.997421264648444994 }4995 }4996 },4997 {4998 "Timestamp": 12971,4999 "Person": {5000 "Index": 0,5001 "Face": {5002 "BoundingBox": {5003 "Width": 0.03489880636334419,5004 "Height": 0.05265837907791138,5005 "Left": 0.487579345703125,5006 "Top": 0.25003612041473395007 },5008 "Landmarks": [5009 {5010 "Type": "eyeLeft",5011 "X": 0.5069812536239624,5012 "Y": 0.26560926437377935013 },5014 {5015 "Type": "eyeRight",5016 "X": 0.5142350196838379,5017 "Y": 0.28565904498100285018 },5019 {5020 "Type": "mouthLeft",5021 "X": 0.49577900767326355,5022 "Y": 0.282272458076477055023 },5024 {5025 "Type": "mouthRight",5026 "X": 0.5017497539520264,5027 "Y": 0.298779606819152835028 },5029 {5030 "Type": "nose",5031 "X": 0.5063232183456421,5032 "Y": 0.285004526376724245033 }5034 ],5035 "Pose": {5036 "Roll": 55.91069793701172,5037 "Yaw": 14.779263496398926,5038 "Pitch": -2.31551051139831545039 },5040 "Quality": {5041 "Brightness": 89.30526733398438,5042 "Sharpness": 4.37483692169189455043 },5044 "Confidence": 99.962066650390625045 }5046 }5047 },5048 {5049 "Timestamp": 13179,5050 "Person": {5051 "Index": 0,5052 "Face": {5053 "BoundingBox": {5054 "Width": 0.03645577281713486,5055 "Height": 0.0527598075568676,5056 "Left": 0.49816054105758667,5057 "Top": 0.157574713230133065058 },5059 "Landmarks": [5060 {5061 "Type": "eyeLeft",5062 "X": 0.5207004547119141,5063 "Y": 0.170858427882194525064 },5065 {5066 "Type": "eyeRight",5067 "X": 0.5270847678184509,5068 "Y": 0.19395543634891515069 },5070 {5071 "Type": "mouthLeft",5072 "X": 0.5078031420707703,5073 "Y": 0.184529989957809455074 },5075 {5076 "Type": "mouthRight",5077 "X": 0.5130855441093445,5078 "Y": 0.203616961836814885079 },5080 {5081 "Type": "nose",5082 "X": 0.5186657309532166,5083 "Y": 0.188056156039237985084 }5085 ],5086 "Pose": {5087 "Roll": 64.36392974853516,5088 "Yaw": 6.317913055419922,5089 "Pitch": 7.8420963287353525090 },5091 "Quality": {5092 "Brightness": 88.90618133544922,5093 "Sharpness": 5.7756686210632325094 },5095 "Confidence": 99.91713714599615096 }5097 }5098 },5099 {5100 "Timestamp": 13179,5101 "Person": {5102 "Index": 8,5103 "BoundingBox": {5104 "Width": 0.522656261920929,5105 "Height": 0.8722222447395325,5106 "Left": 0.28984373807907104,5107 "Top": 0.10416666418313985108 }5109 }5110 },5111 {5112 "Timestamp": 13388,5113 "Person": {5114 "Index": 0,5115 "Face": {5116 "BoundingBox": {5117 "Width": 0.04387478902935982,5118 "Height": 0.053859882056713104,5119 "Left": 0.5435166954994202,5120 "Top": 0.30382335186004645121 },5122 "Landmarks": [5123 {5124 "Type": "eyeLeft",5125 "X": 0.5741804242134094,5126 "Y": 0.31315085291862495127 },5128 {5129 "Type": "eyeRight",5130 "X": 0.5755554437637329,5131 "Y": 0.339737564325332645132 },5133 {5134 "Type": "mouthLeft",5135 "X": 0.5577257871627808,5136 "Y": 0.31729289889335635137 },5138 {5139 "Type": "mouthRight",5140 "X": 0.5589232444763184,5141 "Y": 0.33932834863662725142 },5143 {5144 "Type": "nose",5145 "X": 0.5666032433509827,5146 "Y": 0.32731994986534125147 }5148 ],5149 "Pose": {5150 "Roll": 85.27312469482422,5151 "Yaw": -0.6413391828536987,5152 "Pitch": 4.3989863395690925153 },5154 "Quality": {5155 "Brightness": 70.31595611572266,5156 "Sharpness": 7.5894498825073245157 },5158 "Confidence": 99.9719238281255159 }5160 }5161 },5162 {5163 "Timestamp": 13388,5164 "Person": {5165 "Index": 8,5166 "BoundingBox": {5167 "Width": 0.53125,5168 "Height": 0.9680555462837219,5169 "Left": 0.2578125,5170 "Top": 0.022222222760319715171 }5172 }5173 },5174 {5175 "Timestamp": 13513,5176 "Person": {5177 "Index": 8,5178 "BoundingBox": {5179 "Width": 0.510937511920929,5180 "Height": 0.9388889074325562,5181 "Left": 0.2562499940395355,5182 "Top": 05183 }5184 }5185 },5186 {5187 "Timestamp": 13638,5188 "Person": {5189 "Index": 7,5190 "BoundingBox": {5191 "Width": 0.3140625059604645,5192 "Height": 0.512499988079071,5193 "Left": 0.27656251192092896,5194 "Top": 0.00694444449618458755195 }5196 }5197 },5198 {5199 "Timestamp": 13722,5200 "Person": {5201 "Index": 7,5202 "BoundingBox": {5203 "Width": 0.33281248807907104,5204 "Height": 0.5444444417953491,5205 "Left": 0.2632812559604645,5206 "Top": 0.00555555569007992745207 }5208 }5209 },5210 {5211 "Timestamp": 13763,5212 "Person": {5213 "Index": 7,5214 "BoundingBox": {5215 "Width": 0.3304687440395355,5216 "Height": 0.5680555701255798,5217 "Left": 0.26093751192092896,5218 "Top": 0.00138888892251998195219 }5220 }5221 },5222 {5223 "Timestamp": 13847,5224 "Person": {5225 "Index": 12,5226 "BoundingBox": {5227 "Width": 0.5015624761581421,5228 "Height": 0.9944444298744202,5229 "Left": 0.28515625,5230 "Top": 0.00555555569007992745231 }5232 }5233 },5234 {5235 "Timestamp": 13847,5236 "Person": {5237 "Index": 13,5238 "BoundingBox": {5239 "Width": 0.15156249701976776,5240 "Height": 0.7166666388511658,5241 "Left": 0,5242 "Top": 0.283333331346511845243 }5244 }5245 },5246 {5247 "Timestamp": 13847,5248 "Person": {5249 "Index": 14,5250 "BoundingBox": {5251 "Width": 0.2601562440395355,5252 "Height": 0.8583333492279053,5253 "Left": 0.14531250298023224,5254 "Top": 0.134722217917442325255 }5256 }5257 },5258 {5259 "Timestamp": 13847,5260 "Person": {5261 "Index": 15,5262 "BoundingBox": {5263 "Width": 0.09921874850988388,5264 "Height": 0.23472222685813904,5265 "Left": 0.12734374403953552,5266 "Top": 0.181944444775581365267 }5268 }5269 },5270 {5271 "Timestamp": 13847,5272 "Person": {5273 "Index": 16,5274 "BoundingBox": {5275 "Width": 0.11640624701976776,5276 "Height": 0.2888889014720917,5277 "Left": 0.004687500186264515,5278 "Top": 0.144444450736045845279 }5280 }5281 },5282 {5283 "Timestamp": 13930,5284 "Person": {5285 "Index": 12,5286 "BoundingBox": {5287 "Width": 0.4140625,5288 "Height": 0.9541666507720947,5289 "Left": 0.3460937440395355,5290 "Top": 0.045833334326744085291 }5292 }5293 },5294 {5295 "Timestamp": 13930,5296 "Person": {5297 "Index": 13,5298 "BoundingBox": {5299 "Width": 0.15703125298023224,5300 "Height": 0.7138888835906982,5301 "Left": 0,5302 "Top": 0.286111116409301765303 }5304 }5305 },5306 {5307 "Timestamp": 13930,5308 "Person": {5309 "Index": 14,5310 "BoundingBox": {5311 "Width": 0.2796874940395355,5312 "Height": 0.8722222447395325,5313 "Left": 0.15390625596046448,5314 "Top": 0.120833329856395725315 }5316 }5317 },5318 {5319 "Timestamp": 13930,5320 "Person": {5321 "Index": 15,5322 "BoundingBox": {5323 "Width": 0.09687499701976776,5324 "Height": 0.2291666716337204,5325 "Left": 0.13593749701976776,5326 "Top": 0.18755327 }5328 }5329 },5330 {5331 "Timestamp": 13930,5332 "Person": {5333 "Index": 16,5334 "BoundingBox": {5335 "Width": 0.11562500149011612,5336 "Height": 0.2888889014720917,5337 "Left": 0.012500000186264515,5338 "Top": 0.148611113429069525339 }5340 }5341 },5342 {5343 "Timestamp": 13972,5344 "Person": {5345 "Index": 0,5346 "Face": {5347 "BoundingBox": {5348 "Width": 0.08728589862585068,5349 "Height": 0.22911620140075684,5350 "Left": 0.8204174041748047,5351 "Top": 0.08096629381179815352 },5353 "Landmarks": [5354 {5355 "Type": "eyeLeft",5356 "X": 0.8399572372436523,5357 "Y": 0.174228653311729435358 },5359 {5360 "Type": "eyeRight",5361 "X": 0.8797827959060669,5362 "Y": 0.172705665230751045363 },5364 {5365 "Type": "mouthLeft",5366 "X": 0.8434717655181885,5367 "Y": 0.25249177217483525368 },5369 {5370 "Type": "mouthRight",5371 "X": 0.8762834668159485,5372 "Y": 0.25153937935829165373 },5374 {5375 "Type": "nose",5376 "X": 0.8517630696296692,5377 "Y": 0.211476564407348635378 }5379 ],5380 "Pose": {5381 "Roll": -3.7797114849090576,5382 "Yaw": -19.731828689575195,5383 "Pitch": 7.3935885429382325384 },5385 "Quality": {5386 "Brightness": 74.97002410888672,5387 "Sharpness": 5.7756686210632325388 },5389 "Confidence": 99.99985504150395390 }5391 }5392 },5393 {5394 "Timestamp": 13972,5395 "Person": {5396 "Index": 12,5397 "BoundingBox": {5398 "Width": 0.4351562559604645,5399 "Height": 0.925000011920929,5400 "Left": 0.3304687440395355,5401 "Top": 0.075000002980232245402 }5403 }5404 },5405 {5406 "Timestamp": 13972,5407 "Person": {5408 "Index": 13,5409 "BoundingBox": {5410 "Width": 0.16093750298023224,5411 "Height": 0.7222222089767456,5412 "Left": 0,5413 "Top": 0.27777779102325445414 }5415 }5416 },5417 {5418 "Timestamp": 13972,5419 "Person": {5420 "Index": 14,5421 "BoundingBox": {5422 "Width": 0.2828125059604645,5423 "Height": 0.855555534362793,5424 "Left": 0.15156249701976776,5425 "Top": 0.137500002980232245426 }5427 }5428 },5429 {5430 "Timestamp": 13972,5431 "Person": {5432 "Index": 15,5433 "BoundingBox": {5434 "Width": 0.09218750149011612,5435 "Height": 0.23055554926395416,5436 "Left": 0.140625,5437 "Top": 0.190277785062789925438 }5439 }5440 },5441 {5442 "Timestamp": 13972,5443 "Person": {5444 "Index": 16,5445 "BoundingBox": {5446 "Width": 0.11640624701976776,5447 "Height": 0.28333333134651184,5448 "Left": 0.014843749813735485,5449 "Top": 0.14583332836627965450 }5451 }5452 },5453 {5454 "Timestamp": 14055,5455 "Person": {5456 "Index": 12,5457 "BoundingBox": {5458 "Width": 0.532031238079071,5459 "Height": 0.8055555820465088,5460 "Left": 0.28828126192092896,5461 "Top": 0.19444444775581365462 }5463 }5464 },5465 {5466 "Timestamp": 14055,5467 "Person": {5468 "Index": 13,5469 "BoundingBox": {5470 "Width": 0.17109374701976776,5471 "Height": 0.7041666507720947,5472 "Left": 0,5473 "Top": 0.29583331942558295474 }5475 }5476 },5477 {5478 "Timestamp": 14055,5479 "Person": {5480 "Index": 14,5481 "BoundingBox": {5482 "Width": 0.2679687440395355,5483 "Height": 0.8597221970558167,5484 "Left": 0.15312500298023224,5485 "Top": 0.140277773141860965486 }5487 }5488 },5489 {5490 "Timestamp": 14055,5491 "Person": {5492 "Index": 15,5493 "BoundingBox": {5494 "Width": 0.09140624850988388,5495 "Height": 0.23749999701976776,5496 "Left": 0.14531250298023224,5497 "Top": 0.191666662693023685498 }5499 }5500 },5501 {5502 "Timestamp": 14055,5503 "Person": {5504 "Index": 16,5505 "BoundingBox": {5506 "Width": 0.11484374850988388,5507 "Height": 0.2750000059604645,5508 "Left": 0.02265625074505806,5509 "Top": 0.158333331346511845510 }5511 }5512 },5513 {5514 "Timestamp": 14097,5515 "Person": {5516 "Index": 12,5517 "BoundingBox": {5518 "Width": 0.4273437559604645,5519 "Height": 0.7555555701255798,5520 "Left": 0.35624998807907104,5521 "Top": 0.244444444775581365522 }5523 }5524 },5525 {5526 "Timestamp": 14097,5527 "Person": {5528 "Index": 13,5529 "BoundingBox": {5530 "Width": 0.16875000298023224,5531 "Height": 0.6861110925674438,5532 "Left": 0.0023437500931322575,5533 "Top": 0.313888877630233765534 }5535 }5536 },5537 {5538 "Timestamp": 14097,5539 "Person": {5540 "Index": 14,5541 "BoundingBox": {5542 "Width": 0.2601562440395355,5543 "Height": 0.8458333611488342,5544 "Left": 0.16796875,5545 "Top": 0.154166668653488165546 }5547 }5548 },5549 {5550 "Timestamp": 14097,5551 "Person": {5552 "Index": 15,5553 "BoundingBox": {5554 "Width": 0.09296874701976776,5555 "Height": 0.23472222685813904,5556 "Left": 0.15000000596046448,5557 "Top": 0.190277785062789925558 }5559 }5560 },5561 {5562 "Timestamp": 14097,5563 "Person": {5564 "Index": 16,5565 "BoundingBox": {5566 "Width": 0.11953125149011612,5567 "Height": 0.2680555582046509,5568 "Left": 0.02421874925494194,5569 "Top": 0.163888886570930485570 }5571 }5572 },5573 {5574 "Timestamp": 14180,5575 "Person": {5576 "Index": 0,5577 "Face": {5578 "BoundingBox": {5579 "Width": 0.0909908264875412,5580 "Height": 0.22960980236530304,5581 "Left": 0.8211278915405273,5582 "Top": 0.106029257178306585583 },5584 "Landmarks": [5585 {5586 "Type": "eyeLeft",5587 "X": 0.8402856588363647,5588 "Y": 0.198063567280769355589 },5590 {5591 "Type": "eyeRight",5592 "X": 0.8803862929344177,5593 "Y": 0.19643147289752965594 },5595 {5596 "Type": "mouthLeft",5597 "X": 0.8444343209266663,5598 "Y": 0.276546299457550055599 },5600 {5601 "Type": "mouthRight",5602 "X": 0.8775123357772827,5603 "Y": 0.27558565139770515604 },5605 {5606 "Type": "nose",5607 "X": 0.851729154586792,5608 "Y": 0.23650175333023075609 }5610 ],5611 "Pose": {5612 "Roll": -4.43760871887207,5613 "Yaw": -21.900135040283203,5614 "Pitch": 9.9101047515869145615 },5616 "Quality": {5617 "Brightness": 74.46156311035156,5618 "Sharpness": 5.7756686210632325619 },5620 "Confidence": 99.999954223632815621 }5622 }5623 },5624 {5625 "Timestamp": 14180,5626 "Person": {5627 "Index": 12,5628 "BoundingBox": {5629 "Width": 0.42656248807907104,5630 "Height": 0.7166666388511658,5631 "Left": 0.3687500059604645,5632 "Top": 0.283333331346511845633 }5634 }5635 },5636 {5637 "Timestamp": 14180,5638 "Person": {5639 "Index": 13,5640 "BoundingBox": {5641 "Width": 0.2109375,5642 "Height": 0.7458333373069763,5643 "Left": 0.004687500186264515,5644 "Top": 0.25277778506278995645 }5646 }5647 },5648 {5649 "Timestamp": 14180,5650 "Person": {5651 "Index": 14,5652 "BoundingBox": {5653 "Width": 0.25390625,5654 "Height": 0.8458333611488342,5655 "Left": 0.18359375,5656 "Top": 0.154166668653488165657 }5658 }5659 },5660 {5661 "Timestamp": 14180,5662 "Person": {5663 "Index": 16,5664 "BoundingBox": {5665 "Width": 0.12265624850988388,5666 "Height": 0.25833332538604736,5667 "Left": 0.03359375149011612,5668 "Top": 0.170833334326744085669 }5670 }5671 },5672 {5673 "Timestamp": 14264,5674 "Person": {5675 "Index": 0,5676 "BoundingBox": {5677 "Width": 0.34296876192092896,5678 "Height": 0.9138888716697693,5679 "Left": 0.640625,5680 "Top": 0.077777780592441565681 }5682 }5683 },5684 {5685 "Timestamp": 14264,5686 "Person": {5687 "Index": 12,5688 "BoundingBox": {5689 "Width": 0.39453125,5690 "Height": 0.6972222328186035,5691 "Left": 0.38593751192092896,5692 "Top": 0.30277776718139655693 }5694 }5695 },5696 {5697 "Timestamp": 14264,5698 "Person": {5699 "Index": 13,5700 "BoundingBox": {5701 "Width": 0.20000000298023224,5702 "Height": 0.7430555820465088,5703 "Left": 0.0234375,5704 "Top": 0.255555570125579835705 }5706 }5707 },5708 {5709 "Timestamp": 14264,5710 "Person": {5711 "Index": 14,5712 "BoundingBox": {5713 "Width": 0.2718749940395355,5714 "Height": 0.8611111044883728,5715 "Left": 0.19609375298023224,5716 "Top": 0.13888889551162725717 }5718 }5719 },5720 {5721 "Timestamp": 14264,5722 "Person": {5723 "Index": 16,5724 "BoundingBox": {5725 "Width": 0.12578125298023224,5726 "Height": 0.2611111104488373,5727 "Left": 0.06015624850988388,5728 "Top": 0.165277779102325445729 }5730 }5731 },5732 {5733 "Timestamp": 14305,5734 "Person": {5735 "Index": 0,5736 "BoundingBox": {5737 "Width": 0.3460937440395355,5738 "Height": 0.9263888597488403,5739 "Left": 0.639843761920929,5740 "Top": 0.063888892531394965741 }5742 }5743 },5744 {5745 "Timestamp": 14305,5746 "Person": {5747 "Index": 12,5748 "BoundingBox": {5749 "Width": 0.3492187559604645,5750 "Height": 0.7027778029441833,5751 "Left": 0.3851562440395355,5752 "Top": 0.297222226858139045753 }5754 }5755 },5756 {5757 "Timestamp": 14305,5758 "Person": {5759 "Index": 13,5760 "BoundingBox": {5761 "Width": 0.19765624403953552,5762 "Height": 0.7486110925674438,5763 "Left": 0.03203124925494194,5764 "Top": 0.251388877630233765765 }5766 }5767 },5768 {5769 "Timestamp": 14305,5770 "Person": {5771 "Index": 14,5772 "BoundingBox": {5773 "Width": 0.2867187559604645,5774 "Height": 0.8736110925674438,5775 "Left": 0.20078125596046448,5776 "Top": 0.126388892531394965777 }5778 }5779 },5780 {5781 "Timestamp": 14305,5782 "Person": {5783 "Index": 16,5784 "BoundingBox": {5785 "Width": 0.125,5786 "Height": 0.26249998807907104,5787 "Left": 0.06796874850988388,5788 "Top": 0.16666667163372045789 }5790 }5791 },5792 {5793 "Timestamp": 14389,5794 "Person": {5795 "Index": 0,5796 "BoundingBox": {5797 "Width": 0.3343749940395355,5798 "Height": 0.918055534362793,5799 "Left": 0.6460937261581421,5800 "Top": 0.073611110448837285801 },5802 "Face": {5803 "BoundingBox": {5804 "Width": 0.1374000608921051,5805 "Height": 0.3778358995914459,5806 "Left": 0.5002809762954712,5807 "Top": 0.43271598219871525808 },5809 "Landmarks": [5810 {5811 "Type": "eyeLeft",5812 "X": 0.5283764600753784,5813 "Y": 0.53745287656784065814 },5815 {5816 "Type": "eyeRight",5817 "X": 0.5918936133384705,5818 "Y": 0.5480609536170965819 },5820 {5821 "Type": "mouthLeft",5822 "X": 0.5286568999290466,5823 "Y": 0.6630777120590215824 },5825 {5826 "Type": "mouthRight",5827 "X": 0.5812626481056213,5828 "Y": 0.67228007316589365829 },5830 {5831 "Type": "nose",5832 "X": 0.5548356175422668,5833 "Y": 0.60799151659011845834 }5835 ],5836 "Pose": {5837 "Roll": 3.8071000576019287,5838 "Yaw": -9.51321029663086,5839 "Pitch": -7.4457297325134285840 },5841 "Quality": {5842 "Brightness": 61.02870178222656,5843 "Sharpness": 32.208034515380865844 },5845 "Confidence": 1005846 }5847 }5848 },5849 {5850 "Timestamp": 14389,5851 "Person": {5852 "Index": 12,5853 "BoundingBox": {5854 "Width": 0.41718751192092896,5855 "Height": 0.6652777791023254,5856 "Left": 0.359375,5857 "Top": 0.334722220897674565858 }5859 }5860 },5861 {5862 "Timestamp": 14389,5863 "Person": {5864 "Index": 13,5865 "BoundingBox": {5866 "Width": 0.20234374701976776,5867 "Height": 0.730555534362793,5868 "Left": 0.03984374925494194,5869 "Top": 0.269444435834884645870 }5871 }5872 },5873 {5874 "Timestamp": 14389,5875 "Person": {5876 "Index": 14,5877 "BoundingBox": {5878 "Width": 0.27265626192092896,5879 "Height": 0.8513888716697693,5880 "Left": 0.20546874403953552,5881 "Top": 0.148611113429069525882 }5883 }5884 },5885 {5886 "Timestamp": 14389,5887 "Person": {5888 "Index": 16,5889 "BoundingBox": {5890 "Width": 0.11796875298023224,5891 "Height": 0.25833332538604736,5892 "Left": 0.08046875149011612,5893 "Top": 0.179166659712791445894 }5895 }5896 },5897 {5898 "Timestamp": 14431,5899 "Person": {5900 "Index": 0,5901 "BoundingBox": {5902 "Width": 0.33984375,5903 "Height": 0.8888888955116272,5904 "Left": 0.6390625238418579,5905 "Top": 0.100000001490116125906 }5907 }5908 },5909 {5910 "Timestamp": 14431,5911 "Person": {5912 "Index": 13,5913 "BoundingBox": {5914 "Width": 0.19843749701976776,5915 "Height": 0.7263888716697693,5916 "Left": 0.04531250149011612,5917 "Top": 0.27361109852790835918 }5919 }5920 },5921 {5922 "Timestamp": 14431,5923 "Person": {5924 "Index": 14,5925 "BoundingBox": {5926 "Width": 0.27656251192092896,5927 "Height": 0.8486111164093018,5928 "Left": 0.21250000596046448,5929 "Top": 0.151388883590698245930 }5931 }5932 },5933 {5934 "Timestamp": 14431,5935 "Person": {5936 "Index": 16,5937 "BoundingBox": {5938 "Width": 0.11015625298023224,5939 "Height": 0.24444444477558136,5940 "Left": 0.08828125149011612,5941 "Top": 0.18755942 }5943 }5944 },5945 {5946 "Timestamp": 14514,5947 "Person": {5948 "Index": 0,5949 "BoundingBox": {5950 "Width": 0.33671873807907104,5951 "Height": 0.8777777552604675,5952 "Left": 0.6429687738418579,5953 "Top": 0.115277774631977085954 }5955 }5956 },5957 {5958 "Timestamp": 14514,5959 "Person": {5960 "Index": 12,5961 "BoundingBox": {5962 "Width": 0.4937500059604645,5963 "Height": 0.8055555820465088,5964 "Left": 0.25859373807907104,5965 "Top": 0.19444444775581365966 }5967 }5968 },5969 {5970 "Timestamp": 14514,5971 "Person": {5972 "Index": 13,5973 "BoundingBox": {5974 "Width": 0.203125,5975 "Height": 0.7041666507720947,5976 "Left": 0.05234374850988388,5977 "Top": 0.283333331346511845978 }5979 }5980 },5981 {5982 "Timestamp": 14514,5983 "Person": {5984 "Index": 16,5985 "BoundingBox": {5986 "Width": 0.10625000298023224,5987 "Height": 0.2361111044883728,5988 "Left": 0.09453125298023224,5989 "Top": 0.191666662693023685990 }5991 }5992 },5993 {5994 "Timestamp": 14597,5995 "Person": {5996 "Index": 0,5997 "BoundingBox": {5998 "Width": 0.33671873807907104,5999 "Height": 0.8416666388511658,6000 "Left": 0.6460937261581421,6001 "Top": 0.154166668653488166002 },6003 "Face": {6004 "BoundingBox": {6005 "Width": 0.13121137022972107,6006 "Height": 0.36029133200645447,6007 "Left": 0.4888462424278259,6008 "Top": 0.35701814293861396009 },6010 "Landmarks": [6011 {6012 "Type": "eyeLeft",6013 "X": 0.5121769905090332,6014 "Y": 0.456994026899337776015 },6016 {6017 "Type": "eyeRight",6018 "X": 0.5749273896217346,6019 "Y": 0.46183747053146366020 },6021 {6022 "Type": "mouthLeft",6023 "X": 0.5164217948913574,6024 "Y": 0.57987523078918466025 },6026 {6027 "Type": "mouthRight",6028 "X": 0.5685321688652039,6029 "Y": 0.58446812629699716030 },6031 {6032 "Type": "nose",6033 "X": 0.5384557843208313,6034 "Y": 0.52775317430496226035 }6036 ],6037 "Pose": {6038 "Roll": 0.8614104390144348,6039 "Yaw": -10.970965385437012,6040 "Pitch": -6.6344838142395026041 },6042 "Quality": {6043 "Brightness": 58.51133346557617,6044 "Sharpness": 26.17736816406256045 },6046 "Confidence": 1006047 }6048 }6049 },6050 {6051 "Timestamp": 14597,6052 "Person": {6053 "Index": 12,6054 "BoundingBox": {6055 "Width": 0.3812499940395355,6056 "Height": 0.7638888955116272,6057 "Left": 0.3531250059604645,6058 "Top": 0.23611110448837286059 }6060 }6061 },6062 {6063 "Timestamp": 14597,6064 "Person": {6065 "Index": 13,6066 "BoundingBox": {6067 "Width": 0.20390625298023224,6068 "Height": 0.6972222328186035,6069 "Left": 0.06093750149011612,6070 "Top": 0.290277779102325446071 }6072 }6073 },6074 {6075 "Timestamp": 14597,6076 "Person": {6077 "Index": 14,6078 "BoundingBox": {6079 "Width": 0.20859375596046448,6080 "Height": 0.6625000238418579,6081 "Left": 0.26484376192092896,6082 "Top": 0.141666665673255926083 }6084 }6085 },6086 {6087 "Timestamp": 14639,6088 "Person": {6089 "Index": 0,6090 "BoundingBox": {6091 "Width": 0.36015623807907104,6092 "Height": 0.8152777552604675,6093 "Left": 0.6273437738418579,6094 "Top": 0.179166659712791446095 }6096 }6097 },6098 {6099 "Timestamp": 14639,6100 "Person": {6101 "Index": 13,6102 "BoundingBox": {6103 "Width": 0.19453124701976776,6104 "Height": 0.6930555701255798,6105 "Left": 0.06953124701976776,6106 "Top": 0.29583331942558296107 }6108 }6109 },6110 {6111 "Timestamp": 14639,6112 "Person": {6113 "Index": 14,6114 "BoundingBox": {6115 "Width": 0.20937499403953552,6116 "Height": 0.8500000238418579,6117 "Left": 0.2632812559604645,6118 "Top": 0.129166662693023686119 }6120 }6121 },6122 {6123 "Timestamp": 14723,6124 "Person": {6125 "Index": 0,6126 "BoundingBox": {6127 "Width": 0.3539062440395355,6128 "Height": 0.8111110925674438,6129 "Left": 0.6460937261581421,6130 "Top": 0.184722214937210086131 }6132 }6133 },6134 {6135 "Timestamp": 14723,6136 "Person": {6137 "Index": 12,6138 "BoundingBox": {6139 "Width": 0.40234375,6140 "Height": 0.8277778029441833,6141 "Left": 0.34687501192092896,6142 "Top": 0.172222226858139046143 }6144 }6145 },6146 {6147 "Timestamp": 14723,6148 "Person": {6149 "Index": 13,6150 "BoundingBox": {6151 "Width": 0.19062499701976776,6152 "Height": 0.6847222447395325,6153 "Left": 0.07109375298023224,6154 "Top": 0.30555555224418646155 }6156 }6157 },6158 {6159 "Timestamp": 14723,6160 "Person": {6161 "Index": 14,6162 "BoundingBox": {6163 "Width": 0.21718749403953552,6164 "Height": 0.8125,6165 "Left": 0.22968749701976776,6166 "Top": 0.18756167 }6168 }6169 },6170 {6171 "Timestamp": 14764,6172 "Person": {6173 "Index": 0,6174 "BoundingBox": {6175 "Width": 0.34687501192092896,6176 "Height": 0.8055555820465088,6177 "Left": 0.647656261920929,6178 "Top": 0.19444444775581366179 },6180 "Face": {6181 "BoundingBox": {6182 "Width": 0.1315840780735016,6183 "Height": 0.3416569232940674,6184 "Left": 0.4657195508480072,6185 "Top": 0.25829619169235236186 },6187 "Landmarks": [6188 {6189 "Type": "eyeLeft",6190 "X": 0.4870092570781708,6191 "Y": 0.35744056105613716192 },6193 {6194 "Type": "eyeRight",6195 "X": 0.5486319661140442,6196 "Y": 0.35238423943519596197 },6198 {6199 "Type": "mouthLeft",6200 "X": 0.49874863028526306,6201 "Y": 0.47672766447067266202 },6203 {6204 "Type": "mouthRight",6205 "X": 0.5500533580780029,6206 "Y": 0.47351628541946416207 },6208 {6209 "Type": "nose",6210 "X": 0.5124788880348206,6211 "Y": 0.42537432909011846212 }6213 ],6214 "Pose": {6215 "Roll": -4.862387180328369,6216 "Yaw": -18.894887924194336,6217 "Pitch": -8.533986091613776218 },6219 "Quality": {6220 "Brightness": 64.02313232421875,6221 "Sharpness": 16.494920730590826222 },6223 "Confidence": 1006224 }6225 }6226 },6227 {6228 "Timestamp": 14764,6229 "Person": {6230 "Index": 12,6231 "BoundingBox": {6232 "Width": 0.5062500238418579,6233 "Height": 0.8722222447395325,6234 "Left": 0.26953125,6235 "Top": 0.127777785062789926236 }6237 }6238 },6239 {6240 "Timestamp": 14764,6241 "Person": {6242 "Index": 13,6243 "BoundingBox": {6244 "Width": 0.20000000298023224,6245 "Height": 0.6944444179534912,6246 "Left": 0.07265625149011612,6247 "Top": 0.29861110448837286248 }6249 }6250 },6251 {6252 "Timestamp": 14848,6253 "Person": {6254 "Index": 12,6255 "BoundingBox": {6256 "Width": 0.47343748807907104,6257 "Height": 0.9388889074325562,6258 "Left": 0.28984373807907104,6259 "Top": 0.061111111193895346260 }6261 }6262 },6263 {6264 "Timestamp": 14848,6265 "Person": {6266 "Index": 13,6267 "BoundingBox": {6268 "Width": 0.18593749403953552,6269 "Height": 0.7138888835906982,6270 "Left": 0.09062500298023224,6271 "Top": 0.28194445371627816272 }6273 }6274 },6275 {6276 "Timestamp": 14931,6277 "Person": {6278 "Index": 12,6279 "BoundingBox": {6280 "Width": 0.512499988079071,6281 "Height": 0.9708333611488342,6282 "Left": 0.2578125,6283 "Top": 0.029166666790843016284 }6285 }6286 },6287 {6288 "Timestamp": 14931,6289 "Person": {6290 "Index": 13,6291 "BoundingBox": {6292 "Width": 0.1953125,6293 "Height": 0.7027778029441833,6294 "Left": 0.09296874701976776,6295 "Top": 0.28472220897674566296 }6297 }6298 },6299 {6300 "Timestamp": 14973,6301 "Person": {6302 "Index": 0,6303 "Face": {6304 "BoundingBox": {6305 "Width": 0.08491192013025284,6306 "Height": 0.22873251140117645,6307 "Left": 0.7781792879104614,6308 "Top": 0.319384753704071046309 },6310 "Landmarks": [6311 {6312 "Type": "eyeLeft",6313 "X": 0.7982012033462524,6314 "Y": 0.405294358730316166315 },6316 {6317 "Type": "eyeRight",6318 "X": 0.8376456499099731,6319 "Y": 0.41200694441795356320 },6321 {6322 "Type": "mouthLeft",6323 "X": 0.7980729341506958,6324 "Y": 0.48354697227478036325 },6326 {6327 "Type": "mouthRight",6328 "X": 0.8306311964988708,6329 "Y": 0.48961916565895086330 },6331 {6332 "Type": "nose",6333 "X": 0.807666540145874,6334 "Y": 0.44820249080657966335 }6336 ],6337 "Pose": {6338 "Roll": 4.153573513031006,6339 "Yaw": -12.743638038635254,6340 "Pitch": 0.79669737815856936341 },6342 "Quality": {6343 "Brightness": 77.11627960205078,6344 "Sharpness": 4.37483692169189456345 },6346 "Confidence": 99.999618530273446347 }6348 }6349 },6350 {6351 "Timestamp": 14973,6352 "Person": {6353 "Index": 12,6354 "BoundingBox": {6355 "Width": 0.5367187261581421,6356 "Height": 0.9888888597488403,6357 "Left": 0.24843749403953552,6358 "Top": 0.0111111113801598556359 }6360 }6361 },6362 {6363 "Timestamp": 14973,6364 "Person": {6365 "Index": 13,6366 "BoundingBox": {6367 "Width": 0.20156249403953552,6368 "Height": 0.706944465637207,6369 "Left": 0.09296874701976776,6370 "Top": 0.27500000596046456371 }6372 }6373 },6374 {6375 "Timestamp": 15056,6376 "Person": {6377 "Index": 12,6378 "BoundingBox": {6379 "Width": 0.55078125,6380 "Height": 0.9861111044883728,6381 "Left": 0.23046875,6382 "Top": 0.0138888889923691756383 }6384 }6385 },6386 {6387 "Timestamp": 15056,6388 "Person": {6389 "Index": 13,6390 "BoundingBox": {6391 "Width": 0.18984374403953552,6392 "Height": 0.706944465637207,6393 "Left": 0.09765625,6394 "Top": 0.258333325386047366395 }6396 }6397 },6398 {6399 "Timestamp": 15098,6400 "Person": {6401 "Index": 12,6402 "BoundingBox": {6403 "Width": 0.5328124761581421,6404 "Height": 0.9888888597488403,6405 "Left": 0.23515625298023224,6406 "Top": 0.0097222225740551956407 }6408 }6409 },6410 {6411 "Timestamp": 15098,6412 "Person": {6413 "Index": 13,6414 "BoundingBox": {6415 "Width": 0.18984374403953552,6416 "Height": 0.7124999761581421,6417 "Left": 0.13906249403953552,6418 "Top": 0.241666659712791446419 }6420 }6421 },6422 {6423 "Timestamp": 15181,6424 "Person": {6425 "Index": 0,6426 "BoundingBox": {6427 "Width": 0.3359375,6428 "Height": 0.8069444298744202,6429 "Left": 0.6539062261581421,6430 "Top": 0.183333337306976326431 },6432 "Face": {6433 "BoundingBox": {6434 "Width": 0.13121795654296875,6435 "Height": 0.35464319586753845,6436 "Left": 0.4466712474822998,6437 "Top": 0.14766581356525426438 },6439 "Landmarks": [6440 {6441 "Type": "eyeLeft",6442 "X": 0.46182435750961304,6443 "Y": 0.24201893806457526444 },6445 {6446 "Type": "eyeRight",6447 "X": 0.5211116671562195,6448 "Y": 0.246966466307640086449 },6450 {6451 "Type": "mouthLeft",6452 "X": 0.4686625003814697,6453 "Y": 0.364275574684143076454 },6455 {6456 "Type": "mouthRight",6457 "X": 0.5177319645881653,6458 "Y": 0.369533836841583256459 },6460 {6461 "Type": "nose",6462 "X": 0.4804783761501312,6463 "Y": 0.31119623780250556464 }6465 ],6466 "Pose": {6467 "Roll": 0.009832212701439857,6468 "Yaw": -21.524511337280273,6469 "Pitch": -11.2569093704223636470 },6471 "Quality": {6472 "Brightness": 59.38016891479492,6473 "Sharpness": 16.494920730590826474 },6475 "Confidence": 99.999984741210946476 }6477 }6478 },6479 {6480 "Timestamp": 15181,6481 "Person": {6482 "Index": 12,6483 "BoundingBox": {6484 "Width": 0.534375011920929,6485 "Height": 0.9902777671813965,6486 "Left": 0.23906250298023224,6487 "Top": 0.0097222225740551956488 }6489 }6490 },6491 {6492 "Timestamp": 15181,6493 "Person": {6494 "Index": 13,6495 "BoundingBox": {6496 "Width": 0.18515625596046448,6497 "Height": 0.7111111283302307,6498 "Left": 0.14218750596046448,6499 "Top": 0.25694444775581366500 }6501 }6502 },6503 {6504 "Timestamp": 15265,6505 "Person": {6506 "Index": 12,6507 "BoundingBox": {6508 "Width": 0.6812499761581421,6509 "Height": 1,6510 "Left": 0.3140625059604645,6511 "Top": 06512 }6513 }6514 },6515 {6516 "Timestamp": 15265,6517 "Person": {6518 "Index": 17,6519 "BoundingBox": {6520 "Width": 0.30000001192092896,6521 "Height": 0.5527777671813965,6522 "Left": 0.0054687499068677425,6523 "Top": 0.445833325386047366524 }6525 }6526 },6527 {6528 "Timestamp": 15306,6529 "Person": {6530 "Index": 12,6531 "BoundingBox": {6532 "Width": 0.688281238079071,6533 "Height": 1,6534 "Left": 0.3070312440395355,6535 "Top": 06536 }6537 }6538 },6539 {6540 "Timestamp": 15306,6541 "Person": {6542 "Index": 17,6543 "BoundingBox": {6544 "Width": 0.27656251192092896,6545 "Height": 0.550000011920929,6546 "Left": 0.02890625037252903,6547 "Top": 0.449999988079071046548 }6549 }6550 },6551 {6552 "Timestamp": 15390,6553 "Person": {6554 "Index": 0,6555 "Face": {6556 "BoundingBox": {6557 "Width": 0.4111807942390442,6558 "Height": 1.0292612314224243,6559 "Left": 0.6090302467346191,6560 "Top": 0.075962826609611516561 },6562 "Landmarks": [6563 {6564 "Type": "eyeLeft",6565 "X": 0.7437952756881714,6566 "Y": 0.49166002869606026567 },6568 {6569 "Type": "eyeRight",6570 "X": 0.960017204284668,6571 "Y": 0.456997752189636236572 },6573 {6574 "Type": "mouthLeft",6575 "X": 0.7649946808815002,6576 "Y": 0.90039139986038216577 },6578 {6579 "Type": "mouthRight",6580 "X": 0.9449858069419861,6581 "Y": 0.86830502748489386582 },6583 {6584 "Type": "nose",6585 "X": 0.8962547779083252,6586 "Y": 0.74629712104797366587 }6588 ],6589 "Pose": {6590 "Roll": -1.2278242111206055,6591 "Yaw": 19.01136589050293,6592 "Pitch": -5.641423702239996593 },6594 "Quality": {6595 "Brightness": 55.053688049316406,6596 "Sharpness": 16.494920730590826597 },6598 "Confidence": 1006599 }6600 }6601 },6602 {6603 "Timestamp": 15390,6604 "Person": {6605 "Index": 12,6606 "BoundingBox": {6607 "Width": 0.741406261920929,6608 "Height": 1,6609 "Left": 0.25468748807907104,6610 "Top": 06611 }6612 }6613 },6614 {6615 "Timestamp": 15432,6616 "Person": {6617 "Index": 12,6618 "BoundingBox": {6619 "Width": 0.7203124761581421,6620 "Height": 1,6621 "Left": 0.2757812440395355,6622 "Top": 06623 }6624 }6625 },6626 {6627 "Timestamp": 15515,6628 "Person": {6629 "Index": 12,6630 "BoundingBox": {6631 "Width": 0.7054687738418579,6632 "Height": 1,6633 "Left": 0.2906250059604645,6634 "Top": 06635 }6636 }6637 },6638 {6639 "Timestamp": 15598,6640 "Person": {6641 "Index": 0,6642 "Face": {6643 "BoundingBox": {6644 "Width": 0.43812626600265503,6645 "Height": 1.0127655267715454,6646 "Left": 0.574859619140625,6647 "Top": 0.115819402039051066648 },6649 "Landmarks": [6650 {6651 "Type": "eyeLeft",6652 "X": 0.7239999175071716,6653 "Y": 0.48746407032012946654 },6655 {6656 "Type": "eyeRight",6657 "X": 0.9474047422409058,6658 "Y": 0.444550663232803346659 },6660 {6661 "Type": "mouthLeft",6662 "X": 0.7517290115356445,6663 "Y": 0.90619301795959476664 },6665 {6666 "Type": "mouthRight",6667 "X": 0.9382110238075256,6668 "Y": 0.86799752712249766669 },6670 {6671 "Type": "nose",6672 "X": 0.8788553476333618,6673 "Y": 0.74509024620056156674 }6675 ],6676 "Pose": {6677 "Roll": -5.700436115264893,6678 "Yaw": 9.78475570678711,6679 "Pitch": -16.2457771301269536680 },6681 "Quality": {6682 "Brightness": 58.10261917114258,6683 "Sharpness": 20.9273109436035166684 },6685 "Confidence": 1006686 }6687 }6688 },6689 {6690 "Timestamp": 15598,6691 "Person": {6692 "Index": 12,6693 "BoundingBox": {6694 "Width": 0.7046874761581421,6695 "Height": 1,6696 "Left": 0.2914062440395355,6697 "Top": 06698 }6699 }6700 },6701 {6702 "Timestamp": 15598,6703 "Person": {6704 "Index": 17,6705 "BoundingBox": {6706 "Width": 0.2710937559604645,6707 "Height": 0.5305555462837219,6708 "Left": 0.07500000298023224,6709 "Top": 0.46805554628372196710 }6711 }6712 },6713 {6714 "Timestamp": 15640,6715 "Person": {6716 "Index": 12,6717 "BoundingBox": {6718 "Width": 0.717968761920929,6719 "Height": 1,6720 "Left": 0.2789062559604645,6721 "Top": 06722 }6723 }6724 },6725 {6726 "Timestamp": 15724,6727 "Person": {6728 "Index": 12,6729 "BoundingBox": {6730 "Width": 0.7406250238418579,6731 "Height": 1,6732 "Left": 0.2554687559604645,6733 "Top": 06734 }6735 }6736 },6737 {6738 "Timestamp": 15724,6739 "Person": {6740 "Index": 17,6741 "BoundingBox": {6742 "Width": 0.22499999403953552,6743 "Height": 0.5180555582046509,6744 "Left": 0.0859375,6745 "Top": 0.466666668653488166746 }6747 }6748 },6749 {6750 "Timestamp": 15765,6751 "Person": {6752 "Index": 0,6753 "Face": {6754 "BoundingBox": {6755 "Width": 0.4845650792121887,6756 "Height": 1.0980843305587769,6757 "Left": 0.5323871374130249,6758 "Top": 0.061237800866365436759 },6760 "Landmarks": [6761 {6762 "Type": "eyeLeft",6763 "X": 0.6763858795166016,6764 "Y": 0.47185599803924566765 },6766 {6767 "Type": "eyeRight",6768 "X": 0.9100593328475952,6769 "Y": 0.428251862525939946770 },6771 {6772 "Type": "mouthLeft",6773 "X": 0.7079487442970276,6774 "Y": 0.89424073696136476775 },6776 {6777 "Type": "mouthRight",6778 "X": 0.903194785118103,6779 "Y": 0.85584682226181036780 },6781 {6782 "Type": "nose",6783 "X": 0.8297021389007568,6784 "Y": 0.72876524925231936785 }6786 ],6787 "Pose": {6788 "Roll": -5.060579776763916,6789 "Yaw": -1.3932605981826782,6790 "Pitch": 1.3275594711303716791 },6792 "Quality": {6793 "Brightness": 56.364952087402344,6794 "Sharpness": 26.17736816406256795 },6796 "Confidence": 1006797 }6798 }6799 },6800 {6801 "Timestamp": 15765,6802 "Person": {6803 "Index": 12,6804 "BoundingBox": {6805 "Width": 0.757031261920929,6806 "Height": 1,6807 "Left": 0.23828125,6808 "Top": 06809 }6810 }6811 },6812 {6813 "Timestamp": 15849,6814 "Person": {6815 "Index": 12,6816 "BoundingBox": {6817 "Width": 0.7515624761581421,6818 "Height": 1,6819 "Left": 0.24140624701976776,6820 "Top": 06821 }6822 }6823 },6824 {6825 "Timestamp": 15932,6826 "Person": {6827 "Index": 12,6828 "BoundingBox": {6829 "Width": 0.785937488079071,6830 "Height": 1,6831 "Left": 0.20468750596046448,6832 "Top": 06833 }6834 }6835 },6836 {6837 "Timestamp": 15932,6838 "Person": {6839 "Index": 17,6840 "BoundingBox": {6841 "Width": 0.21718749403953552,6842 "Height": 0.5333333611488342,6843 "Left": 0.08437500149011612,6844 "Top": 0.445833325386047366845 }6846 }6847 },6848 {6849 "Timestamp": 15974,6850 "Person": {6851 "Index": 0,6852 "Face": {6853 "BoundingBox": {6854 "Width": 0.5101546049118042,6855 "Height": 1.0696488618850708,6856 "Left": 0.48992714285850525,6857 "Top": 0.0453304089605808266858 },6859 "Landmarks": [6860 {6861 "Type": "eyeLeft",6862 "X": 0.6056874394416809,6863 "Y": 0.441637426614761356864 },6865 {6866 "Type": "eyeRight",6867 "X": 0.844050407409668,6868 "Y": 0.39470073580741886869 },6870 {6871 "Type": "mouthLeft",6872 "X": 0.6485822796821594,6873 "Y": 0.86013466119766246874 },6875 {6876 "Type": "mouthRight",6877 "X": 0.8482544422149658,6878 "Y": 0.82003867626190196879 },6880 {6881 "Type": "nose",6882 "X": 0.7489261031150818,6883 "Y": 0.69679701328277596884 }6885 ],6886 "Pose": {6887 "Roll": -7.305104732513428,6888 "Yaw": -3.972616195678711,6889 "Pitch": -2.65689921379089366890 },6891 "Quality": {6892 "Brightness": 61.7108039855957,6893 "Sharpness": 12.8487644195556646894 },6895 "Confidence": 1006896 }6897 }6898 },6899 {6900 "Timestamp": 15974,6901 "Person": {6902 "Index": 12,6903 "BoundingBox": {6904 "Width": 0.7789062261581421,6905 "Height": 1,6906 "Left": 0.21171875298023224,6907 "Top": 06908 }6909 }6910 },6911 {6912 "Timestamp": 16057,6913 "Person": {6914 "Index": 12,6915 "BoundingBox": {6916 "Width": 0.764843761920929,6917 "Height": 1,6918 "Left": 0.22109374403953552,6919 "Top": 06920 }6921 }6922 },6923 {6924 "Timestamp": 16057,6925 "Person": {6926 "Index": 17,6927 "BoundingBox": {6928 "Width": 0.22031250596046448,6929 "Height": 0.581944465637207,6930 "Left": 0.08749999850988388,6931 "Top": 0.418055564165115366932 }6933 }6934 },6935 {6936 "Timestamp": 16099,6937 "Person": {6938 "Index": 12,6939 "BoundingBox": {6940 "Width": 0.762499988079071,6941 "Height": 1,6942 "Left": 0.22578124701976776,6943 "Top": 06944 }6945 }6946 },6947 {6948 "Timestamp": 16099,6949 "Person": {6950 "Index": 17,6951 "BoundingBox": {6952 "Width": 0.22499999403953552,6953 "Height": 0.5805555582046509,6954 "Left": 0.11406250298023224,6955 "Top": 0.41944444179534916956 }6957 }6958 },6959 {6960 "Timestamp": 16182,6961 "Person": {6962 "Index": 0,6963 "Face": {6964 "BoundingBox": {6965 "Width": 0.499300092458725,6966 "Height": 0.9985588788986206,6967 "Left": 0.49816209077835083,6968 "Top": 0.080648399889469156969 },6970 "Landmarks": [6971 {6972 "Type": "eyeLeft",6973 "X": 0.6023426055908203,6974 "Y": 0.45370599627494816975 },6976 {6977 "Type": "eyeRight",6978 "X": 0.8349593877792358,6979 "Y": 0.40192714333534246980 },6981 {6982 "Type": "mouthLeft",6983 "X": 0.6532525420188904,6984 "Y": 0.87066006660461436985 },6986 {6987 "Type": "mouthRight",6988 "X": 0.8479835391044617,6989 "Y": 0.82760983705520636990 },6991 {6992 "Type": "nose",6993 "X": 0.730218231678009,6994 "Y": 0.70180696249008186995 }6996 ],6997 "Pose": {6998 "Roll": -9.659573554992676,6999 "Yaw": -13.756221771240234,7000 "Pitch": -1.9155013561248787001 },7002 "Quality": {7003 "Brightness": 64.02526092529297,7004 "Sharpness": 5.7756686210632327005 },7006 "Confidence": 1007007 }7008 }7009 },7010 {7011 "Timestamp": 16182,7012 "Person": {7013 "Index": 12,7014 "BoundingBox": {7015 "Width": 0.754687488079071,7016 "Height": 1,7017 "Left": 0.23203125596046448,7018 "Top": 07019 }7020 }7021 },7022 {7023 "Timestamp": 16182,7024 "Person": {7025 "Index": 17,7026 "BoundingBox": {7027 "Width": 0.22968749701976776,7028 "Height": 0.581944465637207,7029 "Left": 0.11093749850988388,7030 "Top": 0.418055564165115367031 }7032 }7033 },7034 {7035 "Timestamp": 16266,7036 "Person": {7037 "Index": 12,7038 "BoundingBox": {7039 "Width": 0.729687511920929,7040 "Height": 0.9972222447395325,7041 "Left": 0.2593750059604645,7042 "Top": 0.00277777784503996377043 }7044 }7045 },7046 {7047 "Timestamp": 16266,7048 "Person": {7049 "Index": 17,7050 "BoundingBox": {7051 "Width": 0.22968749701976776,7052 "Height": 0.5874999761581421,7053 "Left": 0.11874999850988388,7054 "Top": 0.411111116409301767055 }7056 }7057 },7058 {7059 "Timestamp": 16307,7060 "Person": {7061 "Index": 17,7062 "BoundingBox": {7063 "Width": 0.23515625298023224,7064 "Height": 0.5944444537162781,7065 "Left": 0.11953125149011612,7066 "Top": 0.40555554628372197067 }7068 }7069 },7070 {7071 "Timestamp": 16391,7072 "Person": {7073 "Index": 0,7074 "Face": {7075 "BoundingBox": {7076 "Width": 0.44439592957496643,7077 "Height": 0.9879254698753357,7078 "Left": 0.5745805501937866,7079 "Top": 0.107460528612136847080 },7081 "Landmarks": [7082 {7083 "Type": "eyeLeft",7084 "X": 0.635284423828125,7085 "Y": 0.45052394270896917086 },7087 {7088 "Type": "eyeRight",7089 "X": 0.8621294498443604,7090 "Y": 0.405930906534194957091 },7092 {7093 "Type": "mouthLeft",7094 "X": 0.6883286237716675,7095 "Y": 0.8628253340721137096 },7097 {7098 "Type": "mouthRight",7099 "X": 0.8783507943153381,7100 "Y": 0.82701861858367927101 },7102 {7103 "Type": "nose",7104 "X": 0.7458136081695557,7105 "Y": 0.69897627830505377106 }7107 ],7108 "Pose": {7109 "Roll": -10.947036743164062,7110 "Yaw": -20.821998596191406,7111 "Pitch": -0.69470834732055667112 },7113 "Quality": {7114 "Brightness": 62.21613311767578,7115 "Sharpness": 5.7756686210632327116 },7117 "Confidence": 1007118 }7119 }7120 },7121 {7122 "Timestamp": 16391,7123 "Person": {7124 "Index": 12,7125 "BoundingBox": {7126 "Width": 0.66015625,7127 "Height": 0.9944444298744202,7128 "Left": 0.3304687440395355,7129 "Top": 07130 }7131 }7132 },7133 {7134 "Timestamp": 16391,7135 "Person": {7136 "Index": 17,7137 "BoundingBox": {7138 "Width": 0.29218751192092896,7139 "Height": 0.6027777791023254,7140 "Left": 0.11953125149011612,7141 "Top": 0.397222220897674567142 }7143 }7144 },7145 {7146 "Timestamp": 16433,7147 "Person": {7148 "Index": 12,7149 "BoundingBox": {7150 "Width": 0.66015625,7151 "Height": 0.9958333373069763,7152 "Left": 0.33203125,7153 "Top": 07154 }7155 }7156 },7157 {7158 "Timestamp": 16433,7159 "Person": {7160 "Index": 17,7161 "BoundingBox": {7162 "Width": 0.3046875,7163 "Height": 0.6180555820465088,7164 "Left": 0.12187500298023224,7165 "Top": 0.369444429874420177166 }7167 }7168 },7169 {7170 "Timestamp": 16516,7171 "Person": {7172 "Index": 0,7173 "BoundingBox": {7174 "Width": 0.171875,7175 "Height": 0.5722222328186035,7176 "Left": 0.28984373807907104,7177 "Top": 0.276388883590698247178 }7179 }7180 },7181 {7182 "Timestamp": 16516,7183 "Person": {7184 "Index": 12,7185 "BoundingBox": {7186 "Width": 0.5726562738418579,7187 "Height": 0.9736111164093018,7188 "Left": 0.4273437559604645,7189 "Top": 0.026388889178633697190 }7191 }7192 },7193 {7194 "Timestamp": 16599,7195 "Person": {7196 "Index": 0,7197 "BoundingBox": {7198 "Width": 0.16796875,7199 "Height": 0.5833333134651184,7200 "Left": 0.29765623807907104,7201 "Top": 0.276388883590698247202 },7203 "Face": {7204 "BoundingBox": {7205 "Width": 0.3783840239048004,7206 "Height": 0.8438682556152344,7207 "Left": 0.6503866910934448,7208 "Top": 0.193229168653488167209 },7210 "Landmarks": [7211 {7212 "Type": "eyeLeft",7213 "X": 0.6993783116340637,7214 "Y": 0.4870954453945167215 },7216 {7217 "Type": "eyeRight",7218 "X": 0.9066999554634094,7219 "Y": 0.44357198476791387220 },7221 {7222 "Type": "mouthLeft",7223 "X": 0.7536357045173645,7224 "Y": 0.88467270135879527225 },7226 {7227 "Type": "mouthRight",7228 "X": 0.9269280433654785,7229 "Y": 0.85013711452484137230 },7231 {7232 "Type": "nose",7233 "X": 0.7984873652458191,7234 "Y": 0.72246962785720837235 }7236 ],7237 "Pose": {7238 "Roll": -7.583131313323975,7239 "Yaw": -4.699448585510254,7240 "Pitch": 2.95743632316589367241 },7242 "Quality": {7243 "Brightness": 61.59521484375,7244 "Sharpness": 4.37483692169189457245 },7246 "Confidence": 99.999794006347667247 }7248 }7249 },7250 {7251 "Timestamp": 16599,7252 "Person": {7253 "Index": 12,7254 "BoundingBox": {7255 "Width": 0.5625,7256 "Height": 0.9763888716697693,7257 "Left": 0.4375,7258 "Top": 0.023611111566424377259 }7260 }7261 },7262 {7263 "Timestamp": 16641,7264 "Person": {7265 "Index": 0,7266 "BoundingBox": {7267 "Width": 0.17343750596046448,7268 "Height": 0.5916666388511658,7269 "Left": 0.296875,7270 "Top": 0.283333331346511847271 }7272 }7273 },7274 {7275 "Timestamp": 16641,7276 "Person": {7277 "Index": 12,7278 "BoundingBox": {7279 "Width": 0.5328124761581421,7280 "Height": 0.9694444537162781,7281 "Left": 0.4671874940395355,7282 "Top": 0.030555555596947677283 }7284 }7285 },7286 {7287 "Timestamp": 16725,7288 "Person": {7289 "Index": 0,7290 "BoundingBox": {7291 "Width": 0.18359375,7292 "Height": 0.5874999761581421,7293 "Left": 0.2945312559604645,7294 "Top": 0.276388883590698247295 }7296 }7297 },7298 {7299 "Timestamp": 16725,7300 "Person": {7301 "Index": 12,7302 "BoundingBox": {7303 "Width": 0.4671874940395355,7304 "Height": 0.9666666388511658,7305 "Left": 0.5328124761581421,7306 "Top": 0.030555555596947677307 }7308 }7309 },7310 {7311 "Timestamp": 16766,7312 "Person": {7313 "Index": 0,7314 "BoundingBox": {7315 "Width": 0.17656250298023224,7316 "Height": 0.5902777910232544,7317 "Left": 0.296875,7318 "Top": 0.276388883590698247319 },7320 "Face": {7321 "BoundingBox": {7322 "Width": 0.32634982466697693,7323 "Height": 0.754414439201355,7324 "Left": 0.7272971272468567,7325 "Top": 0.241054996848106387326 },7327 "Landmarks": [7328 {7329 "Type": "eyeLeft",7330 "X": 0.739433765411377,7331 "Y": 0.51486337184906017332 },7333 {7334 "Type": "eyeRight",7335 "X": 0.934070348739624,7336 "Y": 0.462396889925003057337 },7338 {7339 "Type": "mouthLeft",7340 "X": 0.7977184653282166,7341 "Y": 0.91236454248428347342 },7343 {7344 "Type": "mouthRight",7345 "X": 0.9597830772399902,7346 "Y": 0.86975407600402837347 },7348 {7349 "Type": "nose",7350 "X": 0.8313896059989929,7351 "Y": 0.7349378466606147352 }7353 ],7354 "Pose": {7355 "Roll": -9.316826820373535,7356 "Yaw": -22.893310546875,7357 "Pitch": -11.0119056701660167358 },7359 "Quality": {7360 "Brightness": 55.62312698364258,7361 "Sharpness": 3.30185699462890627362 },7363 "Confidence": 98.985832214355477364 }7365 }7366 },7367 {7368 "Timestamp": 16766,7369 "Person": {7370 "Index": 12,7371 "BoundingBox": {7372 "Width": 0.46796876192092896,7373 "Height": 0.9708333611488342,7374 "Left": 0.532031238079071,7375 "Top": 0.026388889178633697376 }7377 }7378 },7379 {7380 "Timestamp": 16766,7381 "Person": {7382 "Index": 18,7383 "Face": {7384 "BoundingBox": {7385 "Width": 0.08562280982732773,7386 "Height": 0.20410707592964172,7387 "Left": 0.19320395588874817,7388 "Top": 0.45299056172370917389 },7390 "Landmarks": [7391 {7392 "Type": "eyeLeft",7393 "X": 0.20880426466464996,7394 "Y": 0.53597259521484387395 },7396 {7397 "Type": "eyeRight",7398 "X": 0.2503224015235901,7399 "Y": 0.54184603691101077400 },7401 {7402 "Type": "mouthLeft",7403 "X": 0.2074904888868332,7404 "Y": 0.61932176351547247405 },7406 {7407 "Type": "mouthRight",7408 "X": 0.24158042669296265,7409 "Y": 0.62410855293273937410 },7411 {7412 "Type": "nose",7413 "X": 0.22152100503444672,7414 "Y": 0.57703483104705817415 }7416 ],7417 "Pose": {7418 "Roll": 2.033524990081787,7419 "Yaw": -26.620384216308594,7420 "Pitch": 0.57145965099334727421 },7422 "Quality": {7423 "Brightness": 64.44091796875,7424 "Sharpness": 3.30185699462890627425 },7426 "Confidence": 99.999870300292977427 }7428 }7429 },7430 {7431 "Timestamp": 16850,7432 "Person": {7433 "Index": 0,7434 "BoundingBox": {7435 "Width": 0.18515625596046448,7436 "Height": 0.6027777791023254,7437 "Left": 0.29609376192092896,7438 "Top": 0.286111116409301767439 }7440 }7441 },7442 {7443 "Timestamp": 16850,7444 "Person": {7445 "Index": 12,7446 "BoundingBox": {7447 "Width": 0.4140625,7448 "Height": 0.9638888835906982,7449 "Left": 0.5859375,7450 "Top": 0.027777777984738357451 }7452 }7453 },7454 {7455 "Timestamp": 16891,7456 "Person": {7457 "Index": 0,7458 "BoundingBox": {7459 "Width": 0.19140625,7460 "Height": 0.6000000238418579,7461 "Left": 0.2945312559604645,7462 "Top": 0.28888890147209177463 }7464 }7465 },7466 {7467 "Timestamp": 16891,7468 "Person": {7469 "Index": 12,7470 "BoundingBox": {7471 "Width": 0.41015625,7472 "Height": 0.9722222089767456,7473 "Left": 0.58984375,7474 "Top": 0.022222222760319717475 }7476 }7477 },7478 {7479 "Timestamp": 16975,7480 "Person": {7481 "Index": 0,7482 "BoundingBox": {7483 "Width": 0.19218750298023224,7484 "Height": 0.5958333611488342,7485 "Left": 0.29296875,7486 "Top": 0.29166665673255927487 },7488 "Face": {7489 "BoundingBox": {7490 "Width": 0.22770901024341583,7491 "Height": 0.6744289994239807,7492 "Left": 0.7879341840744019,7493 "Top": 0.31721374392509467494 },7495 "Landmarks": [7496 {7497 "Type": "eyeLeft",7498 "X": 0.8002569079399109,7499 "Y": 0.50777822732925427500 },7501 {7502 "Type": "eyeRight",7503 "X": 0.9835719466209412,7504 "Y": 0.45689105987548837505 },7506 {7507 "Type": "mouthLeft",7508 "X": 0.8532724976539612,7509 "Y": 0.92170041799545297510 },7511 {7512 "Type": "mouthRight",7513 "X": 1.0050214529037476,7514 "Y": 0.88155996799468997515 },7516 {7517 "Type": "nose",7518 "X": 0.8797947764396667,7519 "Y": 0.71297973394393927520 }7521 ],7522 "Pose": {7523 "Roll": -12.852983474731445,7524 "Yaw": -34.97626876831055,7525 "Pitch": -3.3679153919219977526 },7527 "Quality": {7528 "Brightness": 56.035179138183594,7529 "Sharpness": 4.37483692169189457530 },7531 "Confidence": 91.424407958984387532 }7533 }7534 },7535 {7536 "Timestamp": 16975,7537 "Person": {7538 "Index": 12,7539 "BoundingBox": {7540 "Width": 0.3804687559604645,7541 "Height": 0.9777777791023254,7542 "Left": 0.6195312738418579,7543 "Top": 0.018055556342005737544 }7545 }7546 },7547 {7548 "Timestamp": 16975,7549 "Person": {7550 "Index": 18,7551 "Face": {7552 "BoundingBox": {7553 "Width": 0.08584916591644287,7554 "Height": 0.20033115148544312,7555 "Left": 0.1903589516878128,7556 "Top": 0.46442130208015447557 },7558 "Landmarks": [7559 {7560 "Type": "eyeLeft",7561 "X": 0.20733310282230377,7562 "Y": 0.54420709609985357563 },7564 {7565 "Type": "eyeRight",7566 "X": 0.24486757814884186,7567 "Y": 0.55112773180007937568 },7569 {7570 "Type": "mouthLeft",7571 "X": 0.2052077353000641,7572 "Y": 0.61957627534866337573 },7574 {7575 "Type": "mouthRight",7576 "X": 0.23600730299949646,7577 "Y": 0.62535768747329717578 },7579 {7580 "Type": "nose",7581 "X": 0.21636219322681427,7582 "Y": 0.58118349313735967583 }7584 ],7585 "Pose": {7586 "Roll": 5.077409744262695,7587 "Yaw": -14.612231254577637,7588 "Pitch": 4.1079387664794927589 },7590 "Quality": {7591 "Brightness": 64.68463897705078,7592 "Sharpness": 4.37483692169189457593 },7594 "Confidence": 99.99987792968757595 }7596 }7597 },7598 {7599 "Timestamp": 17058,7600 "Person": {7601 "Index": 0,7602 "BoundingBox": {7603 "Width": 0.1953125,7604 "Height": 0.5833333134651184,7605 "Left": 0.2890625,7606 "Top": 0.28888890147209177607 }7608 }7609 },7610 {7611 "Timestamp": 17058,7612 "Person": {7613 "Index": 12,7614 "BoundingBox": {7615 "Width": 0.36015623807907104,7616 "Height": 0.980555534362793,7617 "Left": 0.639843761920929,7618 "Top": 0.0125000001862645157619 }7620 }7621 },7622 {7623 "Timestamp": 17100,7624 "Person": {7625 "Index": 0,7626 "BoundingBox": {7627 "Width": 0.19765624403953552,7628 "Height": 0.5833333134651184,7629 "Left": 0.28515625,7630 "Top": 0.286111116409301767631 }7632 }7633 },7634 {7635 "Timestamp": 17100,7636 "Person": {7637 "Index": 12,7638 "BoundingBox": {7639 "Width": 0.3335937559604645,7640 "Height": 0.9791666865348816,7641 "Left": 0.6664062738418579,7642 "Top": 0.0138888889923691757643 }7644 }7645 },7646 {7647 "Timestamp": 17183,7648 "Person": {7649 "Index": 0,7650 "BoundingBox": {7651 "Width": 0.20234374701976776,7652 "Height": 0.5916666388511658,7653 "Left": 0.2757812440395355,7654 "Top": 0.286111116409301767655 },7656 "Face": {7657 "BoundingBox": {7658 "Width": 0.06648063659667969,7659 "Height": 0.15914370119571686,7660 "Left": 0.33026379346847534,7661 "Top": 0.34077453613281257662 },7663 "Landmarks": [7664 {7665 "Type": "eyeLeft",7666 "X": 0.35123324394226074,7667 "Y": 0.411518484354019177668 },7669 {7670 "Type": "eyeRight",7671 "X": 0.38404640555381775,7672 "Y": 0.4011491835117347673 },7674 {7675 "Type": "mouthLeft",7676 "X": 0.36082884669303894,7677 "Y": 0.47555705904960637678 },7679 {7680 "Type": "mouthRight",7681 "X": 0.3877469301223755,7682 "Y": 0.46672222018241887683 },7684 {7685 "Type": "nose",7686 "X": 0.3752143383026123,7687 "Y": 0.43194821476936347688 }7689 ],7690 "Pose": {7691 "Roll": -8.309307098388672,7692 "Yaw": 1.2791087627410889,7693 "Pitch": 6.3160781860351567694 },7695 "Quality": {7696 "Brightness": 80.43301391601562,7697 "Sharpness": 3.30185699462890627698 },7699 "Confidence": 99.99997711181647700 }7701 }7702 },7703 {7704 "Timestamp": 17183,7705 "Person": {7706 "Index": 12,7707 "BoundingBox": {7708 "Width": 0.328125,7709 "Height": 0.980555534362793,7710 "Left": 0.671875,7711 "Top": 0.0111111113801598557712 }7713 }7714 },7715 {7716 "Timestamp": 17183,7717 "Person": {7718 "Index": 18,7719 "Face": {7720 "BoundingBox": {7721 "Width": 0.08507023006677628,7722 "Height": 0.19952574372291565,7723 "Left": 0.17598000168800354,7724 "Top": 0.45976930856704717725 },7726 "Landmarks": [7727 {7728 "Type": "eyeLeft",7729 "X": 0.19057419896125793,7730 "Y": 0.53912919759750377731 },7732 {7733 "Type": "eyeRight",7734 "X": 0.22721868753433228,7735 "Y": 0.54514759778976447736 },7737 {7738 "Type": "mouthLeft",7739 "X": 0.1883891522884369,7740 "Y": 0.61395043134689337741 },7742 {7743 "Type": "mouthRight",7744 "X": 0.21838943660259247,7745 "Y": 0.61896950006484997746 },7747 {7748 "Type": "nose",7749 "X": 0.19812417030334473,7750 "Y": 0.57429045438766487751 }7752 ],7753 "Pose": {7754 "Roll": -1.6916389465332031,7755 "Yaw": -32.98500061035156,7756 "Pitch": 10.8506660461425787757 },7758 "Quality": {7759 "Brightness": 64.8934326171875,7760 "Sharpness": 4.37483692169189457761 },7762 "Confidence": 99.999763488769537763 }7764 }7765 },7766 {7767 "Timestamp": 17225,7768 "Person": {7769 "Index": 0,7770 "BoundingBox": {7771 "Width": 0.20703125,7772 "Height": 0.6027777791023254,7773 "Left": 0.26875001192092896,7774 "Top": 0.293055564165115367775 }7776 }7777 },7778 {7779 "Timestamp": 17225,7780 "Person": {7781 "Index": 12,7782 "BoundingBox": {7783 "Width": 0.32890623807907104,7784 "Height": 0.9888888597488403,7785 "Left": 0.671093761920929,7786 "Top": 0.00138888892251998197787 }7788 }7789 },7790 {7791 "Timestamp": 17308,7792 "Person": {7793 "Index": 0,7794 "BoundingBox": {7795 "Width": 0.20781250298023224,7796 "Height": 0.5930555462837219,7797 "Left": 0.25859373807907104,7798 "Top": 0.297222226858139047799 }7800 }7801 },7802 {7803 "Timestamp": 17308,7804 "Person": {7805 "Index": 12,7806 "BoundingBox": {7807 "Width": 0.3343749940395355,7808 "Height": 0.9944444298744202,7809 "Left": 0.6656249761581421,7810 "Top": 07811 }7812 }7813 },7814 {7815 "Timestamp": 17392,7816 "Person": {7817 "Index": 0,7818 "BoundingBox": {7819 "Width": 0.20078125596046448,7820 "Height": 0.5847222208976746,7821 "Left": 0.25,7822 "Top": 0.300000011920928967823 },7824 "Face": {7825 "BoundingBox": {7826 "Width": 0.06639232486486435,7827 "Height": 0.154560849070549,7828 "Left": 0.30185040831565857,7829 "Top": 0.33112183213233957830 },7831 "Landmarks": [7832 {7833 "Type": "eyeLeft",7834 "X": 0.32229161262512207,7835 "Y": 0.39938616752624517836 },7837 {7838 "Type": "eyeRight",7839 "X": 0.35428497195243835,7840 "Y": 0.3905867934226997841 },7842 {7843 "Type": "mouthLeft",7844 "X": 0.33037006855010986,7845 "Y": 0.46035748720169077846 },7847 {7848 "Type": "mouthRight",7849 "X": 0.35667353868484497,7850 "Y": 0.452858895063400277851 },7852 {7853 "Type": "nose",7854 "X": 0.34370362758636475,7855 "Y": 0.41975694894790657856 }7857 ],7858 "Pose": {7859 "Roll": -6.849527359008789,7860 "Yaw": 7.4085540771484375,7861 "Pitch": 8.191860198974617862 },7863 "Quality": {7864 "Brightness": 80.35274505615234,7865 "Sharpness": 4.37483692169189457866 },7867 "Confidence": 99.999984741210947868 }7869 }7870 },7871 {7872 "Timestamp": 17392,7873 "Person": {7874 "Index": 12,7875 "BoundingBox": {7876 "Width": 0.33671873807907104,7877 "Height": 0.9888888597488403,7878 "Left": 0.663281261920929,7879 "Top": 0.0097222225740551957880 }7881 }7882 },7883 {7884 "Timestamp": 17392,7885 "Person": {7886 "Index": 18,7887 "BoundingBox": {7888 "Width": 0.31328123807907104,7889 "Height": 0.5652777552604675,7890 "Left": 0.04296875,7891 "Top": 0.43472221493721017892 },7893 "Face": {7894 "BoundingBox": {7895 "Width": 0.08646504580974579,7896 "Height": 0.2026292234659195,7897 "Left": 0.14561326801776886,7898 "Top": 0.449008405208587657899 },7900 "Landmarks": [7901 {7902 "Type": "eyeLeft",7903 "X": 0.16000762581825256,7904 "Y": 0.52821159362792977905 },7906 {7907 "Type": "eyeRight",7908 "X": 0.19628070294857025,7909 "Y": 0.53376537561416637910 },7911 {7912 "Type": "mouthLeft",7913 "X": 0.15727609395980835,7914 "Y": 0.60256099700927737915 },7916 {7917 "Type": "mouthRight",7918 "X": 0.18694032728672028,7919 "Y": 0.60715335607528697920 },7921 {7922 "Type": "nose",7923 "X": 0.16651535034179688,7924 "Y": 0.5616542696952827925 }7926 ],7927 "Pose": {7928 "Roll": -1.1278938055038452,7929 "Yaw": -33.054412841796875,7930 "Pitch": 11.5906457901000987931 },7932 "Quality": {7933 "Brightness": 64.06417083740234,7934 "Sharpness": 5.7756686210632327935 },7936 "Confidence": 99.999763488769537937 }7938 }7939 },7940 {7941 "Timestamp": 17434,7942 "Person": {7943 "Index": 0,7944 "BoundingBox": {7945 "Width": 0.20390625298023224,7946 "Height": 0.581944465637207,7947 "Left": 0.23984375596046448,7948 "Top": 0.30277776718139657949 }7950 }7951 },7952 {7953 "Timestamp": 17434,7954 "Person": {7955 "Index": 12,7956 "BoundingBox": {7957 "Width": 0.34765625,7958 "Height": 0.9916666746139526,7959 "Left": 0.65234375,7960 "Top": 0.0083333337679505357961 }7962 }7963 },7964 {7965 "Timestamp": 17517,7966 "Person": {7967 "Index": 0,7968 "BoundingBox": {7969 "Width": 0.22031250596046448,7970 "Height": 0.5680555701255798,7971 "Left": 0.23125000298023224,7972 "Top": 0.304166674613952647973 }7974 }7975 },7976 {7977 "Timestamp": 17517,7978 "Person": {7979 "Index": 12,7980 "BoundingBox": {7981 "Width": 0.36406248807907104,7982 "Height": 0.9944444298744202,7983 "Left": 0.635937511920929,7984 "Top": 0.00555555569007992747985 }7986 }7987 },7988 {7989 "Timestamp": 17517,7990 "Person": {7991 "Index": 18,7992 "BoundingBox": {7993 "Width": 0.3140625059604645,7994 "Height": 0.5791666507720947,7995 "Left": 0.02890625037252903,7996 "Top": 0.418055564165115367997 }7998 }7999 },8000 {8001 "Timestamp": 17559,8002 "Person": {8003 "Index": 0,8004 "BoundingBox": {8005 "Width": 0.22499999403953552,8006 "Height": 0.550000011920929,8007 "Left": 0.2265625,8008 "Top": 0.30972221493721018009 },8010 "Face": {8011 "BoundingBox": {8012 "Width": 0.2274618148803711,8013 "Height": 0.6164805889129639,8014 "Left": 0.7840535044670105,8015 "Top": 0.342432051897048958016 },8017 "Landmarks": [8018 {8019 "Type": "eyeLeft",8020 "X": 0.8477572202682495,8021 "Y": 0.44603428244590768022 },8023 {8024 "Type": "eyeRight",8025 "X": 1.031107783317566,8026 "Y": 0.4089446961879738027 },8028 {8029 "Type": "mouthLeft",8030 "X": 0.8863488435745239,8031 "Y": 0.87611132860183728032 },8033 {8034 "Type": "mouthRight",8035 "X": 1.0379185676574707,8036 "Y": 0.84696674346923838037 },8038 {8039 "Type": "nose",8040 "X": 0.9442670941352844,8041 "Y": 0.64032202959060678042 }8043 ],8044 "Pose": {8045 "Roll": -11.861002922058105,8046 "Yaw": -35.29519271850586,8047 "Pitch": -5.8660745620727548048 },8049 "Quality": {8050 "Brightness": 62.11555099487305,8051 "Sharpness": 3.30185699462890628052 },8053 "Confidence": 70.803482055664068054 }8055 }8056 },8057 {8058 "Timestamp": 17559,8059 "Person": {8060 "Index": 12,8061 "BoundingBox": {8062 "Width": 0.38671875,8063 "Height": 0.9916666746139526,8064 "Left": 0.61328125,8065 "Top": 0.0083333337679505358066 }8067 }8068 },8069 {8070 "Timestamp": 17559,8071 "Person": {8072 "Index": 18,8073 "BoundingBox": {8074 "Width": 0.3046875,8075 "Height": 0.5847222208976746,8076 "Left": 0.03046875074505806,8077 "Top": 0.411111116409301768078 },8079 "Face": {8080 "BoundingBox": {8081 "Width": 0.08736880123615265,8082 "Height": 0.19852197170257568,8083 "Left": 0.11488838493824005,8084 "Top": 0.441419690847396858085 },8086 "Landmarks": [8087 {8088 "Type": "eyeLeft",8089 "X": 0.13076354563236237,8090 "Y": 0.51975429058074958091 },8092 {8093 "Type": "eyeRight",8094 "X": 0.16602739691734314,8095 "Y": 0.5243652462959298096 },8097 {8098 "Type": "mouthLeft",8099 "X": 0.12777702510356903,8100 "Y": 0.59190124273300178101 },8102 {8103 "Type": "mouthRight",8104 "X": 0.1565893590450287,8105 "Y": 0.59562993049621588106 },8107 {8108 "Type": "nose",8109 "X": 0.1368979513645172,8110 "Y": 0.55037295818328868111 }8112 ],8113 "Pose": {8114 "Roll": -2.746687173843384,8115 "Yaw": -34.1027946472168,8116 "Pitch": 13.941273689270028117 },8118 "Quality": {8119 "Brightness": 63.91931915283203,8120 "Sharpness": 7.5894498825073248121 },8122 "Confidence": 99.999893188476568123 }8124 }8125 },8126 {8127 "Timestamp": 17642,8128 "Person": {8129 "Index": 0,8130 "BoundingBox": {8131 "Width": 0.24062499403953552,8132 "Height": 0.5513888597488403,8133 "Left": 0.21875,8134 "Top": 0.311111122369766248135 }8136 }8137 },8138 {8139 "Timestamp": 17642,8140 "Person": {8141 "Index": 12,8142 "BoundingBox": {8143 "Width": 0.38359373807907104,8144 "Height": 1,8145 "Left": 0.616406261920929,8146 "Top": 08147 }8148 }8149 },8150 {8151 "Timestamp": 17642,8152 "Person": {8153 "Index": 18,8154 "BoundingBox": {8155 "Width": 0.31718748807907104,8156 "Height": 0.5874999761581421,8157 "Left": 0.01796874962747097,8158 "Top": 0.41249999403953558159 }8160 }8161 },8162 {8163 "Timestamp": 17726,8164 "Person": {8165 "Index": 0,8166 "BoundingBox": {8167 "Width": 0.21953125298023224,8168 "Height": 0.6222222447395325,8169 "Left": 0.18671874701976776,8170 "Top": 0.26666668057441718171 }8172 }8173 },8174 {8175 "Timestamp": 17726,8176 "Person": {8177 "Index": 12,8178 "BoundingBox": {8179 "Width": 0.3695312440395355,8180 "Height": 0.9944444298744202,8181 "Left": 0.6304687261581421,8182 "Top": 0.00555555569007992748183 }8184 }8185 },8186 {8187 "Timestamp": 17767,8188 "Person": {8189 "Index": 0,8190 "BoundingBox": {8191 "Width": 0.22578124701976776,8192 "Height": 0.6305555701255798,8193 "Left": 0.18281249701976776,8194 "Top": 0.262499988079071048195 },8196 "Face": {8197 "BoundingBox": {8198 "Width": 0.0404110923409462,8199 "Height": 0.10739275813102722,8200 "Left": 0.3832980692386627,8201 "Top": 0.36527621746063238202 },8203 "Landmarks": [8204 {8205 "Type": "eyeLeft",8206 "X": 0.4150528907775879,8207 "Y": 0.4119650125503548208 },8209 {8210 "Type": "eyeRight",8211 "X": 0.421610027551651,8212 "Y": 0.419506907463073738213 },8214 {8215 "Type": "mouthLeft",8216 "X": 0.4081045687198639,8217 "Y": 0.448543339967727668218 },8219 {8220 "Type": "mouthRight",8221 "X": 0.4128362834453583,8222 "Y": 0.45402136445045478223 },8224 {8225 "Type": "nose",8226 "X": 0.4248795807361603,8227 "Y": 0.437772154808044438228 }8229 ],8230 "Pose": {8231 "Roll": 40.09278106689453,8232 "Yaw": 62.599212646484375,8233 "Pitch": 12.9674453735351568234 },8235 "Quality": {8236 "Brightness": 76.85404205322266,8237 "Sharpness": 4.37483692169189458238 },8239 "Confidence": 99.973747253417978240 }8241 }8242 },8243 {8244 "Timestamp": 17767,8245 "Person": {8246 "Index": 12,8247 "BoundingBox": {8248 "Width": 0.37031251192092896,8249 "Height": 0.9902777671813965,8250 "Left": 0.629687488079071,8251 "Top": 0.0083333337679505358252 }8253 }8254 },8255 {8256 "Timestamp": 17767,8257 "Person": {8258 "Index": 18,8259 "Face": {8260 "BoundingBox": {8261 "Width": 0.08598921447992325,8262 "Height": 0.19732381403446198,8263 "Left": 0.08772940933704376,8264 "Top": 0.43101623654365548265 },8266 "Landmarks": [8267 {8268 "Type": "eyeLeft",8269 "X": 0.10271399468183517,8270 "Y": 0.50880968570709238271 },8272 {8273 "Type": "eyeRight",8274 "X": 0.13843724131584167,8275 "Y": 0.51293051242828378276 },8277 {8278 "Type": "mouthLeft",8279 "X": 0.09959269315004349,8280 "Y": 0.58108508586883548281 },8282 {8283 "Type": "mouthRight",8284 "X": 0.12880831956863403,8285 "Y": 0.58435702323913578286 },8287 {8288 "Type": "nose",8289 "X": 0.10913296043872833,8290 "Y": 0.53908538818359388291 }8292 ],8293 "Pose": {8294 "Roll": 0.22502976655960083,8295 "Yaw": -31.494037628173828,8296 "Pitch": 9.5092239379882818297 },8298 "Quality": {8299 "Brightness": 63.90081787109375,8300 "Sharpness": 9.9129037857055668301 },8302 "Confidence": 99.999771118164068303 }8304 }8305 },8306 {8307 "Timestamp": 17851,8308 "Person": {8309 "Index": 0,8310 "BoundingBox": {8311 "Width": 0.234375,8312 "Height": 0.6305555701255798,8313 "Left": 0.18046875298023224,8314 "Top": 0.258333325386047368315 }8316 }8317 },8318 {8319 "Timestamp": 17851,8320 "Person": {8321 "Index": 12,8322 "BoundingBox": {8323 "Width": 0.35468751192092896,8324 "Height": 0.987500011920929,8325 "Left": 0.645312488079071,8326 "Top": 0.00694444449618458758327 }8328 }8329 },8330 {8331 "Timestamp": 17892,8332 "Person": {8333 "Index": 0,8334 "BoundingBox": {8335 "Width": 0.22265625,8336 "Height": 0.5638889074325562,8337 "Left": 0.23046875,8338 "Top": 0.31258339 }8340 }8341 },8342 {8343 "Timestamp": 17892,8344 "Person": {8345 "Index": 12,8346 "BoundingBox": {8347 "Width": 0.3695312440395355,8348 "Height": 0.9972222447395325,8349 "Left": 0.6304687261581421,8350 "Top": 0.00138888892251998198351 }8352 }8353 },8354 {8355 "Timestamp": 17892,8356 "Person": {8357 "Index": 18,8358 "BoundingBox": {8359 "Width": 0.3265624940395355,8360 "Height": 0.612500011920929,8361 "Left": 0,8362 "Top": 0.383333325386047368363 }8364 }8365 },8366 {8367 "Timestamp": 17976,8368 "Person": {8369 "Index": 0,8370 "BoundingBox": {8371 "Width": 0.22109374403953552,8372 "Height": 0.6333333253860474,8373 "Left": 0.18281249701976776,8374 "Top": 0.251388877630233768375 },8376 "Face": {8377 "BoundingBox": {8378 "Width": 0.06665053218603134,8379 "Height": 0.1512100249528885,8380 "Left": 0.24545907974243164,8381 "Top": 0.30220031738281258382 },8383 "Landmarks": [8384 {8385 "Type": "eyeLeft",8386 "X": 0.2651195228099823,8387 "Y": 0.36772400140762338388 },8389 {8390 "Type": "eyeRight",8391 "X": 0.2937984764575958,8392 "Y": 0.35924905538558968393 },8394 {8395 "Type": "mouthLeft",8396 "X": 0.27284514904022217,8397 "Y": 0.41748586297035228398 },8399 {8400 "Type": "mouthRight",8401 "X": 0.2965330183506012,8402 "Y": 0.410456687211990368403 },8404 {8405 "Type": "nose",8406 "X": 0.2819632291793823,8407 "Y": 0.381058633327484138408 }8409 ],8410 "Pose": {8411 "Roll": -9.55139446258545,8412 "Yaw": -0.34221914410591125,8413 "Pitch": 19.2630901336669928414 },8415 "Quality": {8416 "Brightness": 80.30418395996094,8417 "Sharpness": 7.5894498825073248418 },8419 "Confidence": 99.999931335449228420 }8421 }8422 },8423 {8424 "Timestamp": 17976,8425 "Person": {8426 "Index": 12,8427 "BoundingBox": {8428 "Width": 0.37109375,8429 "Height": 0.9958333373069763,8430 "Left": 0.62890625,8431 "Top": 08432 }8433 }8434 },8435 {8436 "Timestamp": 17976,8437 "Person": {8438 "Index": 18,8439 "Face": {8440 "BoundingBox": {8441 "Width": 0.08513553440570831,8442 "Height": 0.19594714045524597,8443 "Left": 0.08852274715900421,8444 "Top": 0.418286353349685678445 },8446 "Landmarks": [8447 {8448 "Type": "eyeLeft",8449 "X": 0.10177209973335266,8450 "Y": 0.49526086449623118451 },8452 {8453 "Type": "eyeRight",8454 "X": 0.1380590945482254,8455 "Y": 0.50045704841613778456 },8457 {8458 "Type": "mouthLeft",8459 "X": 0.09951020032167435,8460 "Y": 0.56740176677703868461 },8462 {8463 "Type": "mouthRight",8464 "X": 0.1292361468076706,8465 "Y": 0.57164245843887338466 },8467 {8468 "Type": "nose",8469 "X": 0.1098790392279625,8470 "Y": 0.52704739570617688471 }8472 ],8473 "Pose": {8474 "Roll": 2.2922756671905518,8475 "Yaw": -26.012638092041016,8476 "Pitch": 10.2142848968505868477 },8478 "Quality": {8479 "Brightness": 63.76594161987305,8480 "Sharpness": 7.5894498825073248481 },8482 "Confidence": 99.999748229980478483 }8484 }8485 },8486 {8487 "Timestamp": 18059,8488 "Person": {8489 "Index": 19,8490 "BoundingBox": {8491 "Width": 0.43359375,8492 "Height": 0.9013888835906982,8493 "Left": 0,8494 "Top": 0.093055553734302528495 }8496 }8497 },8498 {8499 "Timestamp": 18101,8500 "Person": {8501 "Index": 19,8502 "BoundingBox": {8503 "Width": 0.3203125,8504 "Height": 0.8819444179534912,8505 "Left": 0.004687500186264515,8506 "Top": 0.113888889551162728507 }8508 }8509 },8510 {8511 "Timestamp": 18184,8512 "Person": {8513 "Index": 19,8514 "BoundingBox": {8515 "Width": 0.4429687559604645,8516 "Height": 0.918055534362793,8517 "Left": 0,8518 "Top": 0.063888892531394968519 },8520 "Face": {8521 "BoundingBox": {8522 "Width": 0.2031979113817215,8523 "Height": 0.6175183057785034,8524 "Left": 0.09531853348016739,8525 "Top": 0.261237621307373058526 },8527 "Landmarks": [8528 {8529 "Type": "eyeLeft",8530 "X": 0.21064652502536774,8531 "Y": 0.5076394677162178532 },8533 {8534 "Type": "eyeRight",8535 "X": 0.2615649402141571,8536 "Y": 0.52483433485031138537 },8538 {8539 "Type": "mouthLeft",8540 "X": 0.19745318591594696,8541 "Y": 0.68855398893356328542 },8543 {8544 "Type": "mouthRight",8545 "X": 0.23719260096549988,8546 "Y": 0.7008730769157418547 },8548 {8549 "Type": "nose",8550 "X": 0.2579099237918854,8551 "Y": 0.62286341190338138552 }8553 ],8554 "Pose": {8555 "Roll": 16.0351505279541,8556 "Yaw": 56.634220123291016,8557 "Pitch": 0.68824428319931038558 },8559 "Quality": {8560 "Brightness": 54.298973083496094,8561 "Sharpness": 20.9273109436035168562 },8563 "Confidence": 99.999221801757818564 }8565 }8566 },8567 {8568 "Timestamp": 18226,8569 "Person": {8570 "Index": 19,8571 "BoundingBox": {8572 "Width": 0.4476562440395355,8573 "Height": 0.9125000238418579,8574 "Left": 0,8575 "Top": 0.063888892531394968576 }8577 }8578 },8579 {8580 "Timestamp": 18309,8581 "Person": {8582 "Index": 19,8583 "BoundingBox": {8584 "Width": 0.46015626192092896,8585 "Height": 0.9291666746139526,8586 "Left": 0,8587 "Top": 0.06258588 }8589 }8590 },8591 {8592 "Timestamp": 18393,8593 "Person": {8594 "Index": 19,8595 "BoundingBox": {8596 "Width": 0.44218748807907104,8597 "Height": 0.9263888597488403,8598 "Left": 0,8599 "Top": 0.058333333581686028600 },8601 "Face": {8602 "BoundingBox": {8603 "Width": 0.19210369884967804,8604 "Height": 0.5996801853179932,8605 "Left": 0.12707826495170593,8606 "Top": 0.27578181028366098607 },8608 "Landmarks": [8609 {8610 "Type": "eyeLeft",8611 "X": 0.2383006364107132,8612 "Y": 0.51987272500991828613 },8614 {8615 "Type": "eyeRight",8616 "X": 0.2947823405265808,8617 "Y": 0.53487879037857068618 },8619 {8620 "Type": "mouthLeft",8621 "X": 0.2197660356760025,8622 "Y": 0.7110309004783638623 },8624 {8625 "Type": "mouthRight",8626 "X": 0.2641313374042511,8627 "Y": 0.72021502256393438628 },8629 {8630 "Type": "nose",8631 "X": 0.29435503482818604,8632 "Y": 0.64178472757339488633 }8634 ],8635 "Pose": {8636 "Roll": 11.654343605041504,8637 "Yaw": 49.84846878051758,8638 "Pitch": -3.3096528053283698639 },8640 "Quality": {8641 "Brightness": 54.20368194580078,8642 "Sharpness": 20.9273109436035168643 },8644 "Confidence": 99.999320983886728645 }8646 }8647 },8648 {8649 "Timestamp": 18435,8650 "Person": {8651 "Index": 19,8652 "BoundingBox": {8653 "Width": 0.4390625059604645,8654 "Height": 0.9375,8655 "Left": 0,8656 "Top": 0.045833334326744088657 }8658 }8659 },8660 {8661 "Timestamp": 18518,8662 "Person": {8663 "Index": 19,8664 "BoundingBox": {8665 "Width": 0.43437498807907104,8666 "Height": 0.9361110925674438,8667 "Left": 0,8668 "Top": 0.051388889551162728669 }8670 }8671 },8672 {8673 "Timestamp": 18560,8674 "Person": {8675 "Index": 19,8676 "BoundingBox": {8677 "Width": 0.44062501192092896,8678 "Height": 0.9361110925674438,8679 "Left": 0,8680 "Top": 0.050000000745058068681 },8682 "Face": {8683 "BoundingBox": {8684 "Width": 0.18544065952301025,8685 "Height": 0.6029910445213318,8686 "Left": 0.15354998409748077,8687 "Top": 0.28436911106109628688 },8689 "Landmarks": [8690 {8691 "Type": "eyeLeft",8692 "X": 0.2709812819957733,8693 "Y": 0.52064806222915658694 },8695 {8696 "Type": "eyeRight",8697 "X": 0.3265291154384613,8698 "Y": 0.53888189792633068699 },8700 {8701 "Type": "mouthLeft",8702 "X": 0.2599562108516693,8703 "Y": 0.73253375291824348704 },8705 {8706 "Type": "mouthRight",8707 "X": 0.3027772903442383,8708 "Y": 0.74531948566436778709 },8710 {8711 "Type": "nose",8712 "X": 0.33078688383102417,8713 "Y": 0.64411455392837528714 }8715 ],8716 "Pose": {8717 "Roll": 14.342761993408203,8718 "Yaw": 56.33788299560547,8719 "Pitch": -0.0176592487841844568720 },8721 "Quality": {8722 "Brightness": 54.36717987060547,8723 "Sharpness": 26.17736816406258724 },8725 "Confidence": 99.999107360839848726 }8727 }8728 },8729 {8730 "Timestamp": 18643,8731 "Person": {8732 "Index": 19,8733 "BoundingBox": {8734 "Width": 0.44453126192092896,8735 "Height": 0.9416666626930237,8736 "Left": 0,8737 "Top": 0.047222223132848748738 }8739 }8740 },8741 {8742 "Timestamp": 18727,8743 "Person": {8744 "Index": 19,8745 "BoundingBox": {8746 "Width": 0.42109376192092896,8747 "Height": 0.9472222328186035,8748 "Left": 0.0023437500931322575,8749 "Top": 0.043055556714534768750 }8751 }8752 },8753 {8754 "Timestamp": 18768,8755 "Person": {8756 "Index": 19,8757 "BoundingBox": {8758 "Width": 0.4429687559604645,8759 "Height": 0.9611111283302307,8760 "Left": 0,8761 "Top": 0.029166666790843018762 },8763 "Face": {8764 "BoundingBox": {8765 "Width": 0.16648323833942413,8766 "Height": 0.6269681453704834,8767 "Left": 0.19686567783355713,8768 "Top": 0.248441562056541448769 },8770 "Landmarks": [8771 {8772 "Type": "eyeLeft",8773 "X": 0.3038954436779022,8774 "Y": 0.5192303061485298775 },8776 {8777 "Type": "eyeRight",8778 "X": 0.34631481766700745,8779 "Y": 0.52852165699005138780 },8781 {8782 "Type": "mouthLeft",8783 "X": 0.29376059770584106,8784 "Y": 0.72131717205047618785 },8786 {8787 "Type": "mouthRight",8788 "X": 0.32498669624328613,8789 "Y": 0.72609591484069828790 },8791 {8792 "Type": "nose",8793 "X": 0.35934677720069885,8794 "Y": 0.63065761327743538795 }8796 ],8797 "Pose": {8798 "Roll": 10.884110450744629,8799 "Yaw": 62.35570526123047,8800 "Pitch": -3.63249611854553228801 },8802 "Quality": {8803 "Brightness": 54.45286178588867,8804 "Sharpness": 20.9273109436035168805 },8806 "Confidence": 99.996246337890628807 }8808 }8809 },8810 {8811 "Timestamp": 18852,8812 "Person": {8813 "Index": 19,8814 "BoundingBox": {8815 "Width": 0.4398437440395355,8816 "Height": 0.9624999761581421,8817 "Left": 0.0007812500116415322,8818 "Top": 0.023611111566424378819 }8820 }8821 },8822 {8823 "Timestamp": 18893,8824 "Person": {8825 "Index": 19,8826 "BoundingBox": {8827 "Width": 0.44609373807907104,8828 "Height": 0.9777777791023254,8829 "Left": 0,8830 "Top": 0.0152777777984738358831 }8832 }8833 },8834 {8835 "Timestamp": 18977,8836 "Person": {8837 "Index": 19,8838 "BoundingBox": {8839 "Width": 0.46171873807907104,8840 "Height": 0.9902777671813965,8841 "Left": 0,8842 "Top": 0.00138888892251998198843 }8844 }8845 },8846 {8847 "Timestamp": 19060,8848 "Person": {8849 "Index": 19,8850 "BoundingBox": {8851 "Width": 0.4546875059604645,8852 "Height": 0.9888888597488403,8853 "Left": 0,8854 "Top": 0.00138888892251998198855 }8856 }8857 },8858 {8859 "Timestamp": 19102,8860 "Person": {8861 "Index": 19,8862 "BoundingBox": {8863 "Width": 0.46562498807907104,8864 "Height": 0.9916666746139526,8865 "Left": 0,8866 "Top": 08867 }8868 }8869 },8870 {8871 "Timestamp": 19185,8872 "Person": {8873 "Index": 19,8874 "BoundingBox": {8875 "Width": 0.48124998807907104,8876 "Height": 0.9986110925674438,8877 "Left": 0,8878 "Top": 08879 }8880 }8881 },8882 {8883 "Timestamp": 19227,8884 "Person": {8885 "Index": 19,8886 "BoundingBox": {8887 "Width": 0.4820312559604645,8888 "Height": 1,8889 "Left": 0,8890 "Top": 08891 }8892 }8893 },8894 {8895 "Timestamp": 19310,8896 "Person": {8897 "Index": 19,8898 "BoundingBox": {8899 "Width": 0.4375,8900 "Height": 0.9986110925674438,8901 "Left": 0.00390625,8902 "Top": 0.00138888892251998198903 }8904 }8905 },8906 {8907 "Timestamp": 19394,8908 "Person": {8909 "Index": 19,8910 "BoundingBox": {8911 "Width": 0.4164062440395355,8912 "Height": 0.9916666746139526,8913 "Left": 0.0054687499068677425,8914 "Top": 0.0083333337679505358915 }8916 }8917 },8918 {8919 "Timestamp": 19436,8920 "Person": {8921 "Index": 19,8922 "BoundingBox": {8923 "Width": 0.3929687440395355,8924 "Height": 0.987500011920929,8925 "Left": 0.00937500037252903,8926 "Top": 0.0125000001862645158927 }8928 }8929 },8930 {8931 "Timestamp": 19519,8932 "Person": {8933 "Index": 19,8934 "BoundingBox": {8935 "Width": 0.41718751192092896,8936 "Height": 0.9847221970558167,8937 "Left": 0.010937499813735485,8938 "Top": 0.0152777777984738358939 }8940 }8941 },8942 {8943 "Timestamp": 19561,8944 "Person": {8945 "Index": 19,8946 "BoundingBox": {8947 "Width": 0.4078125059604645,8948 "Height": 0.9680555462837219,8949 "Left": 0.014843749813735485,8950 "Top": 0.031944446265697488951 }8952 }8953 },8954 {8955 "Timestamp": 19644,8956 "Person": {8957 "Index": 19,8958 "BoundingBox": {8959 "Width": 0.44140625,8960 "Height": 0.9916666746139526,8961 "Left": 0,8962 "Top": 0.0083333337679505358963 }8964 }8965 },8966 {8967 "Timestamp": 19728,8968 "Person": {8969 "Index": 19,8970 "BoundingBox": {8971 "Width": 0.41718751192092896,8972 "Height": 0.9986110925674438,8973 "Left": 0,8974 "Top": 0.00138888892251998198975 }8976 }8977 },8978 {8979 "Timestamp": 19769,8980 "Person": {8981 "Index": 19,8982 "BoundingBox": {8983 "Width": 0.40703123807907104,8984 "Height": 0.9833333492279053,8985 "Left": 0,8986 "Top": 0.0097222225740551958987 }8988 }8989 },8990 {8991 "Timestamp": 19853,8992 "Person": {8993 "Index": 19,8994 "BoundingBox": {8995 "Width": 0.421875,8996 "Height": 0.9847221970558167,8997 "Left": 0,8998 "Top": 0.00277777784503996378999 }9000 }9001 },9002 {9003 "Timestamp": 19894,9004 "Person": {9005 "Index": 19,9006 "BoundingBox": {9007 "Width": 0.41328126192092896,9008 "Height": 0.9888888597488403,9009 "Left": 0,9010 "Top": 0.00138888892251998199011 }9012 }9013 },9014 {9015 "Timestamp": 19978,9016 "Person": {9017 "Index": 19,9018 "BoundingBox": {9019 "Width": 0.4117187559604645,9020 "Height": 0.9847221970558167,9021 "Left": 0,9022 "Top": 09023 }9024 }9025 },9026 {9027 "Timestamp": 20061,9028 "Person": {9029 "Index": 19,9030 "BoundingBox": {9031 "Width": 0.42890626192092896,9032 "Height": 0.9916666746139526,9033 "Left": 0,9034 "Top": 09035 }9036 }9037 },9038 {9039 "Timestamp": 20103,9040 "Person": {9041 "Index": 19,9042 "BoundingBox": {9043 "Width": 0.4242187440395355,9044 "Height": 0.9916666746139526,9045 "Left": 0,9046 "Top": 0.00277777784503996379047 }9048 }9049 },9050 {9051 "Timestamp": 20186,9052 "Person": {9053 "Index": 19,9054 "BoundingBox": {9055 "Width": 0.3960937559604645,9056 "Height": 0.9888888597488403,9057 "Left": 0,9058 "Top": 0.0083333337679505359059 }9060 }9061 },9062 {9063 "Timestamp": 20270,9064 "Person": {9065 "Index": 19,9066 "BoundingBox": {9067 "Width": 0.4398437440395355,9068 "Height": 0.9750000238418579,9069 "Left": 0,9070 "Top": 0.025000000372529039071 }9072 }9073 },9074 {9075 "Timestamp": 20311,9076 "Person": {9077 "Index": 19,9078 "BoundingBox": {9079 "Width": 0.44609373807907104,9080 "Height": 0.9597222208976746,9081 "Left": 0,9082 "Top": 0.040277779102325449083 }9084 }9085 },9086 {9087 "Timestamp": 20437,9088 "Person": {9089 "Index": 19,9090 "BoundingBox": {9091 "Width": 0.4078125059604645,9092 "Height": 0.9486111402511597,9093 "Left": 0,9094 "Top": 0.051388889551162729095 }9096 }9097 },9098 {9099 "Timestamp": 20854,9100 "Person": {9101 "Index": 20,9102 "BoundingBox": {9103 "Width": 0.510937511920929,9104 "Height": 0.9750000238418579,9105 "Left": 0.4749999940395355,9106 "Top": 0.025000000372529039107 }9108 }9109 },9110 {9111 "Timestamp": 20937,9112 "Person": {9113 "Index": 20,9114 "BoundingBox": {9115 "Width": 0.5132812261581421,9116 "Height": 0.9750000238418579,9117 "Left": 0.47187501192092896,9118 "Top": 0.025000000372529039119 }9120 }9121 },9122 {9123 "Timestamp": 20979,9124 "Person": {9125 "Index": 20,9126 "BoundingBox": {9127 "Width": 0.512499988079071,9128 "Height": 0.9763888716697693,9129 "Left": 0.4710937440395355,9130 "Top": 0.023611111566424379131 }9132 }9133 },9134 {9135 "Timestamp": 21062,9136 "Person": {9137 "Index": 20,9138 "BoundingBox": {9139 "Width": 0.526562511920929,9140 "Height": 0.9777777791023254,9141 "Left": 0.4609375,9142 "Top": 0.022222222760319719143 }9144 }9145 },9146 {9147 "Timestamp": 21104,9148 "Person": {9149 "Index": 20,9150 "BoundingBox": {9151 "Width": 0.538281261920929,9152 "Height": 0.9791666865348816,9153 "Left": 0.4507812559604645,9154 "Top": 0.020833333954215059155 }9156 }9157 },9158 {9159 "Timestamp": 21187,9160 "Person": {9161 "Index": 20,9162 "BoundingBox": {9163 "Width": 0.5367187261581421,9164 "Height": 0.9777777791023254,9165 "Left": 0.453125,9166 "Top": 0.022222222760319719167 }9168 }9169 },9170 {9171 "Timestamp": 21271,9172 "Person": {9173 "Index": 20,9174 "BoundingBox": {9175 "Width": 0.515625,9176 "Height": 0.9791666865348816,9177 "Left": 0.47187501192092896,9178 "Top": 0.020833333954215059179 }9180 }9181 },9182 {9183 "Timestamp": 21312,9184 "Person": {9185 "Index": 20,9186 "BoundingBox": {9187 "Width": 0.5234375,9188 "Height": 0.9791666865348816,9189 "Left": 0.46484375,9190 "Top": 0.020833333954215059191 }9192 }9193 },9194 {9195 "Timestamp": 21396,9196 "Person": {9197 "Index": 20,9198 "BoundingBox": {9199 "Width": 0.522656261920929,9200 "Height": 0.9777777791023254,9201 "Left": 0.4632812440395355,9202 "Top": 0.022222222760319719203 }9204 }9205 },9206 {9207 "Timestamp": 21438,9208 "Person": {9209 "Index": 20,9210 "BoundingBox": {9211 "Width": 0.526562511920929,9212 "Height": 0.980555534362793,9213 "Left": 0.46406251192092896,9214 "Top": 0.019444445148110399215 }9216 }9217 },9218 {9219 "Timestamp": 21521,9220 "Person": {9221 "Index": 20,9222 "BoundingBox": {9223 "Width": 0.538281261920929,9224 "Height": 0.9833333492279053,9225 "Left": 0.45234376192092896,9226 "Top": 0.016666667535901079227 }9228 }9229 },9230 {9231 "Timestamp": 21604,9232 "Person": {9233 "Index": 20,9234 "BoundingBox": {9235 "Width": 0.54296875,9236 "Height": 0.9888888597488403,9237 "Left": 0.45390623807907104,9238 "Top": 0.0111111113801598559239 }9240 }9241 },9242 {9243 "Timestamp": 21646,9244 "Person": {9245 "Index": 20,9246 "BoundingBox": {9247 "Width": 0.5406249761581421,9248 "Height": 0.987500011920929,9249 "Left": 0.4546875059604645,9250 "Top": 0.0111111113801598559251 }9252 }9253 },9254 {9255 "Timestamp": 21730,9256 "Person": {9257 "Index": 20,9258 "BoundingBox": {9259 "Width": 0.5335937738418579,9260 "Height": 0.9819444417953491,9261 "Left": 0.46171873807907104,9262 "Top": 0.018055556342005739263 }9264 }9265 },9266 {9267 "Timestamp": 21771,9268 "Person": {9269 "Index": 20,9270 "BoundingBox": {9271 "Width": 0.5296875238418579,9272 "Height": 0.9833333492279053,9273 "Left": 0.4625000059604645,9274 "Top": 0.016666667535901079275 }9276 }9277 },9278 {9279 "Timestamp": 21855,9280 "Person": {9281 "Index": 20,9282 "BoundingBox": {9283 "Width": 0.526562511920929,9284 "Height": 0.980555534362793,9285 "Left": 0.46406251192092896,9286 "Top": 0.018055556342005739287 }9288 }9289 },9290 {9291 "Timestamp": 21855,9292 "Person": {9293 "Index": 21,9294 "BoundingBox": {9295 "Width": 0.08124999701976776,9296 "Height": 0.4277777671813965,9297 "Left": 0.14609375596046448,9298 "Top": 0.46805554628372199299 }9300 }9301 },9302 {9303 "Timestamp": 21938,9304 "Person": {9305 "Index": 20,9306 "BoundingBox": {9307 "Width": 0.5406249761581421,9308 "Height": 0.9819444417953491,9309 "Left": 0.4515624940395355,9310 "Top": 0.018055556342005739311 }9312 }9313 },9314 {9315 "Timestamp": 21938,9316 "Person": {9317 "Index": 21,9318 "BoundingBox": {9319 "Width": 0.08203125,9320 "Height": 0.4305555522441864,9321 "Left": 0.14765624701976776,9322 "Top": 0.46527779102325449323 }9324 }9325 },9326 {9327 "Timestamp": 21980,9328 "Person": {9329 "Index": 20,9330 "BoundingBox": {9331 "Width": 0.553906261920929,9332 "Height": 0.9861111044883728,9333 "Left": 0.4429687559604645,9334 "Top": 0.0125000001862645159335 }9336 }9337 },9338 {9339 "Timestamp": 22063,9340 "Person": {9341 "Index": 20,9342 "BoundingBox": {9343 "Width": 0.550000011920929,9344 "Height": 0.9833333492279053,9345 "Left": 0.44453126192092896,9346 "Top": 0.016666667535901079347 }9348 }9349 },9350 {9351 "Timestamp": 22063,9352 "Person": {9353 "Index": 21,9354 "BoundingBox": {9355 "Width": 0.08203125,9356 "Height": 0.4305555522441864,9357 "Left": 0.14765624701976776,9358 "Top": 0.46805554628372199359 }9360 }9361 },9362 {9363 "Timestamp": 22105,9364 "Person": {9365 "Index": 20,9366 "BoundingBox": {9367 "Width": 0.539843738079071,9368 "Height": 0.980555534362793,9369 "Left": 0.45703125,9370 "Top": 0.0152777777984738359371 }9372 }9373 },9374 {9375 "Timestamp": 22105,9376 "Person": {9377 "Index": 21,9378 "BoundingBox": {9379 "Width": 0.08515624701976776,9380 "Height": 0.42222222685813904,9381 "Left": 0.14765624701976776,9382 "Top": 0.473611116409301769383 }9384 }9385 },9386 {9387 "Timestamp": 22188,9388 "Person": {9389 "Index": 20,9390 "BoundingBox": {9391 "Width": 0.539843738079071,9392 "Height": 0.9819444417953491,9393 "Left": 0.45625001192092896,9394 "Top": 0.016666667535901079395 }9396 }9397 },9398 {9399 "Timestamp": 22188,9400 "Person": {9401 "Index": 21,9402 "BoundingBox": {9403 "Width": 0.0859375,9404 "Height": 0.42916667461395264,9405 "Left": 0.14687499403953552,9406 "Top": 0.473611116409301769407 }9408 }9409 },9410 {9411 "Timestamp": 22230,9412 "Person": {9413 "Index": 20,9414 "BoundingBox": {9415 "Width": 0.539843738079071,9416 "Height": 0.9833333492279053,9417 "Left": 0.45390623807907104,9418 "Top": 0.016666667535901079419 }9420 }9421 },9422 {9423 "Timestamp": 22397,9424 "Person": {9425 "Index": 22,9426 "BoundingBox": {9427 "Width": 0.39531248807907104,9428 "Height": 0.6791666746139526,9429 "Left": 0.6015625,9430 "Top": 0.31666666269302379431 }9432 }9433 },9434 {9435 "Timestamp": 22439,9436 "Person": {9437 "Index": 22,9438 "BoundingBox": {9439 "Width": 0.40937501192092896,9440 "Height": 0.7541666626930237,9441 "Left": 0.590624988079071,9442 "Top": 0.245833337306976329443 }9444 }9445 },9446 {9447 "Timestamp": 22522,9448 "Person": {9449 "Index": 22,9450 "BoundingBox": {9451 "Width": 0.3773437440395355,9452 "Height": 0.8111110925674438,9453 "Left": 0.6226562261581421,9454 "Top": 0.184722214937210089455 }9456 }9457 },9458 {9459 "Timestamp": 22564,9460 "Person": {9461 "Index": 22,9462 "BoundingBox": {9463 "Width": 0.3960937559604645,9464 "Height": 0.8569444417953491,9465 "Left": 0.6039062738418579,9466 "Top": 0.13888889551162729467 }9468 }9469 },9470 {9471 "Timestamp": 22647,9472 "Person": {9473 "Index": 22,9474 "BoundingBox": {9475 "Width": 0.3929687440395355,9476 "Height": 0.9152777791023254,9477 "Left": 0.6070312261581421,9478 "Top": 0.07638888806104669479 }9480 }9481 },9482 {9483 "Timestamp": 22731,9484 "Person": {9485 "Index": 22,9486 "BoundingBox": {9487 "Width": 0.4085937440395355,9488 "Height": 0.9402777552604675,9489 "Left": 0.5914062261581421,9490 "Top": 0.044444445520639429491 }9492 }9493 },9494 {9495 "Timestamp": 22772,9496 "Person": {9497 "Index": 22,9498 "BoundingBox": {9499 "Width": 0.3960937559604645,9500 "Height": 0.9583333134651184,9501 "Left": 0.6039062738418579,9502 "Top": 0.031944446265697489503 }9504 }9505 },9506 {9507 "Timestamp": 22856,9508 "Person": {9509 "Index": 22,9510 "BoundingBox": {9511 "Width": 0.4007812440395355,9512 "Height": 0.9680555462837219,9513 "Left": 0.5992187261581421,9514 "Top": 0.0138888889923691759515 }9516 }9517 },9518 {9519 "Timestamp": 22897,9520 "Person": {9521 "Index": 22,9522 "BoundingBox": {9523 "Width": 0.3968749940395355,9524 "Height": 0.9666666388511658,9525 "Left": 0.6031249761581421,9526 "Top": 0.019444445148110399527 }9528 }9529 },9530 {9531 "Timestamp": 22981,9532 "Person": {9533 "Index": 22,9534 "BoundingBox": {9535 "Width": 0.40546876192092896,9536 "Height": 0.949999988079071,9537 "Left": 0.594531238079071,9538 "Top": 0.040277779102325449539 }9540 }9541 },9542 {9543 "Timestamp": 23064,9544 "Person": {9545 "Index": 22,9546 "BoundingBox": {9547 "Width": 0.40156251192092896,9548 "Height": 0.9138888716697693,9549 "Left": 0.598437488079071,9550 "Top": 0.077777780592441569551 }9552 }9553 },9554 {9555 "Timestamp": 23106,9556 "Person": {9557 "Index": 22,9558 "BoundingBox": {9559 "Width": 0.3882812559604645,9560 "Height": 0.8819444179534912,9561 "Left": 0.6117187738418579,9562 "Top": 0.11111111193895349563 }9564 }9565 },9566 {9567 "Timestamp": 23189,9568 "Person": {9569 "Index": 22,9570 "BoundingBox": {9571 "Width": 0.4078125059604645,9572 "Height": 0.8347222208976746,9573 "Left": 0.5921875238418579,9574 "Top": 0.162499994039535529575 }9576 }9577 },9578 {9579 "Timestamp": 23231,9580 "Person": {9581 "Index": 22,9582 "BoundingBox": {9583 "Width": 0.46953123807907104,9584 "Height": 0.7861111164093018,9585 "Left": 0.5257812738418579,9586 "Top": 0.213888883590698249587 }9588 }9589 },9590 {9591 "Timestamp": 23314,9592 "Person": {9593 "Index": 22,9594 "BoundingBox": {9595 "Width": 0.4359374940395355,9596 "Height": 0.6777777671813965,9597 "Left": 0.559374988079071,9598 "Top": 0.32222223281860359599 }9600 }9601 },9602 {9603 "Timestamp": 23732,9604 "Person": {9605 "Index": 22,9606 "BoundingBox": {9607 "Width": 0.34687501192092896,9608 "Height": 0.8638888597488403,9609 "Left": 0,9610 "Top": 0.136111110448837289611 }9612 }9613 },9614 {9615 "Timestamp": 23773,9616 "Person": {9617 "Index": 22,9618 "BoundingBox": {9619 "Width": 0.3531250059604645,9620 "Height": 0.918055534362793,9621 "Left": 0,9622 "Top": 0.080555558204650889623 }9624 }9625 },9626 {9627 "Timestamp": 23857,9628 "Person": {9629 "Index": 22,9630 "BoundingBox": {9631 "Width": 0.3656249940395355,9632 "Height": 0.9861111044883728,9633 "Left": 0,9634 "Top": 09635 }9636 }9637 },9638 {9639 "Timestamp": 23898,9640 "Person": {9641 "Index": 22,9642 "BoundingBox": {9643 "Width": 0.36250001192092896,9644 "Height": 0.9833333492279053,9645 "Left": 0.0031250000465661287,9646 "Top": 09647 }9648 }9649 },9650 {9651 "Timestamp": 23982,9652 "Person": {9653 "Index": 22,9654 "BoundingBox": {9655 "Width": 0.3656249940395355,9656 "Height": 0.9861111044883728,9657 "Left": 0.0031250000465661287,9658 "Top": 09659 }9660 }9661 },9662 {9663 "Timestamp": 24065,9664 "Person": {9665 "Index": 22,9666 "BoundingBox": {9667 "Width": 0.359375,9668 "Height": 0.9902777671813965,9669 "Left": 0.0015625000232830644,9670 "Top": 09671 }9672 }9673 },9674 {9675 "Timestamp": 24107,9676 "Person": {9677 "Index": 22,9678 "BoundingBox": {9679 "Width": 0.36406248807907104,9680 "Height": 0.9888888597488403,9681 "Left": 0.00390625,9682 "Top": 09683 }9684 }9685 },9686 {9687 "Timestamp": 24190,9688 "Person": {9689 "Index": 22,9690 "BoundingBox": {9691 "Width": 0.3695312440395355,9692 "Height": 0.9847221970558167,9693 "Left": 0,9694 "Top": 09695 }9696 }9697 },9698 {9699 "Timestamp": 24232,9700 "Person": {9701 "Index": 22,9702 "BoundingBox": {9703 "Width": 0.36796873807907104,9704 "Height": 0.9833333492279053,9705 "Left": 0,9706 "Top": 0.00138888892251998199707 }9708 }9709 },9710 {9711 "Timestamp": 24315,9712 "Person": {9713 "Index": 22,9714 "BoundingBox": {9715 "Width": 0.3570312559604645,9716 "Height": 0.925000011920929,9717 "Left": 0.0062500000931322575,9718 "Top": 0.066666670143604289719 }9720 }9721 },9722 {9723 "Timestamp": 24399,9724 "Person": {9725 "Index": 22,9726 "BoundingBox": {9727 "Width": 0.37890625,9728 "Height": 0.8208333253860474,9729 "Left": 0.0007812500116415322,9730 "Top": 0.179166659712791449731 }9732 }9733 },9734 {9735 "Timestamp": 24441,9736 "Person": {9737 "Index": 23,9738 "BoundingBox": {9739 "Width": 0.15703125298023224,9740 "Height": 0.4277777671813965,9741 "Left": 0.835156261920929,9742 "Top": 0.218055561184883129743 }9744 }9745 },9746 {9747 "Timestamp": 24524,9748 "Person": {9749 "Index": 23,9750 "BoundingBox": {9751 "Width": 0.16328124701976776,9752 "Height": 0.4124999940395355,9753 "Left": 0.8296874761581421,9754 "Top": 0.23611110448837289755 }9756 }9757 },9758 {9759 "Timestamp": 24566,9760 "Person": {9761 "Index": 23,9762 "BoundingBox": {9763 "Width": 0.16484375298023224,9764 "Height": 0.40833333134651184,9765 "Left": 0.827343761920929,9766 "Top": 0.248611107468605049767 }9768 }9769 },9770 {9771 "Timestamp": 24649,9772 "Person": {9773 "Index": 23,9774 "BoundingBox": {9775 "Width": 0.16562500596046448,9776 "Height": 0.3916666805744171,9777 "Left": 0.824999988079071,9778 "Top": 0.279166668653488169779 }9780 }9781 },9782 {9783 "Timestamp": 24733,9784 "Person": {9785 "Index": 23,9786 "BoundingBox": {9787 "Width": 0.16875000298023224,9788 "Height": 0.39444443583488464,9789 "Left": 0.8203125,9790 "Top": 0.29583331942558299791 }9792 }9793 },9794 {9795 "Timestamp": 24774,9796 "Person": {9797 "Index": 24,9798 "BoundingBox": {9799 "Width": 0.09296874701976776,9800 "Height": 0.27222222089767456,9801 "Left": 0.664843738079071,9802 "Top": 0.438888877630233769803 }9804 }9805 },9806 {9807 "Timestamp": 24858,9808 "Person": {9809 "Index": 24,9810 "BoundingBox": {9811 "Width": 0.09453125298023224,9812 "Height": 0.2750000059604645,9813 "Left": 0.663281261920929,9814 "Top": 0.44027778506278999815 }9816 }9817 },9818 {9819 "Timestamp": 24899,9820 "Person": {9821 "Index": 24,9822 "BoundingBox": {9823 "Width": 0.09531249850988388,9824 "Height": 0.27222222089767456,9825 "Left": 0.6617187261581421,9826 "Top": 0.44027778506278999827 }9828 }9829 },9830 {9831 "Timestamp": 24983,9832 "Person": {9833 "Index": 24,9834 "BoundingBox": {9835 "Width": 0.09687499701976776,9836 "Height": 0.27638888359069824,9837 "Left": 0.6578124761581421,9838 "Top": 0.438888877630233769839 }9840 }9841 },9842 {9843 "Timestamp": 25066,9844 "Person": {9845 "Index": 24,9846 "BoundingBox": {9847 "Width": 0.09062500298023224,9848 "Height": 0.2805555462837219,9849 "Left": 0.659375011920929,9850 "Top": 0.44722223281860359851 }9852 }9853 },9854 {9855 "Timestamp": 25108,9856 "Person": {9857 "Index": 24,9858 "BoundingBox": {9859 "Width": 0.08203125,9860 "Height": 0.19583334028720856,9861 "Left": 0.6351562738418579,9862 "Top": 0.61388885974884039863 }9864 }9865 },9866 {9867 "Timestamp": 25191,9868 "Person": {9869 "Index": 24,9870 "BoundingBox": {9871 "Width": 0.07968749850988388,9872 "Height": 0.1944444477558136,9873 "Left": 0.6390625238418579,9874 "Top": 0.62361109256744389875 }9876 }9877 },9878 {9879 "Timestamp": 25233,9880 "Person": {9881 "Index": 24,9882 "BoundingBox": {9883 "Width": 0.078125,9884 "Height": 0.19722221791744232,9885 "Left": 0.641406238079071,9886 "Top": 0.62638890743255629887 }9888 }9889 },9890 {9891 "Timestamp": 25316,9892 "Person": {9893 "Index": 24,9894 "BoundingBox": {9895 "Width": 0.08203125,9896 "Height": 0.20972222089767456,9897 "Left": 0.6390625238418579,9898 "Top": 0.64861112833023079899 }9900 }9901 },9902 {9903 "Timestamp": 25400,9904 "Person": {9905 "Index": 24,9906 "BoundingBox": {9907 "Width": 0.08281250298023224,9908 "Height": 0.20972222089767456,9909 "Left": 0.641406238079071,9910 "Top": 0.67083334922790539911 }9912 }9913 },9914 {9915 "Timestamp": 25442,9916 "Person": {9917 "Index": 23,9918 "BoundingBox": {9919 "Width": 0.08046875149011612,9920 "Height": 0.14166666567325592,9921 "Left": 0.8187500238418579,9922 "Top": 0.85694444179534919923 }9924 }9925 },9926 {9927 "Timestamp": 29195,9928 "Person": {9929 "Index": 25,9930 "BoundingBox": {9931 "Width": 0.518750011920929,9932 "Height": 0.9583333134651184,9933 "Left": 0,9934 "Top": 0.04166666790843019935 }9936 }9937 },9938 {9939 "Timestamp": 29446,9940 "Person": {9941 "Index": 25,9942 "BoundingBox": {9943 "Width": 0.49609375,9944 "Height": 0.8736110925674438,9945 "Left": 0,9946 "Top": 0.113888889551162729947 }9948 }9949 },9950 {9951 "Timestamp": 29571,9952 "Person": {9953 "Index": 25,9954 "BoundingBox": {9955 "Width": 0.375,9956 "Height": 0.918055534362793,9957 "Left": 0,9958 "Top": 0.081944443285465249959 }9960 }9961 },9962 {9963 "Timestamp": 29654,9964 "Person": {9965 "Index": 25,9966 "BoundingBox": {9967 "Width": 0.3734374940395355,9968 "Height": 0.8847222328186035,9969 "Left": 0,9970 "Top": 0.115277774631977089971 }9972 }9973 },9974 {9975 "Timestamp": 29738,9976 "Person": {9977 "Index": 25,9978 "BoundingBox": {9979 "Width": 0.30859375,9980 "Height": 0.8666666746139526,9981 "Left": 0.0007812500116415322,9982 "Top": 0.119444444775581369983 }9984 }9985 },9986 {9987 "Timestamp": 29779,9988 "Person": {9989 "Index": 25,9990 "BoundingBox": {9991 "Width": 0.2593750059604645,9992 "Height": 0.9236111044883728,9993 "Left": 0.0023437500931322575,9994 "Top": 0.066666670143604289995 }9996 }9997 },9998 {9999 "Timestamp": 29863,10000 "Person": {10001 "Index": 25,10002 "BoundingBox": {10003 "Width": 0.23593750596046448,10004 "Height": 0.8666666746139526,10005 "Left": 0,10006 "Top": 0.1236111074686050410007 }10008 }10009 },10010 {10011 "Timestamp": 29904,10012 "Person": {10013 "Index": 25,10014 "BoundingBox": {10015 "Width": 0.27734375,10016 "Height": 0.887499988079071,10017 "Left": 0,10018 "Top": 0.1027777791023254410019 }10020 }10021 },10022 {10023 "Timestamp": 29988,10024 "Person": {10025 "Index": 25,10026 "BoundingBox": {10027 "Width": 0.26171875,10028 "Height": 0.9388889074325562,10029 "Left": 0,10030 "Top": 0.048611111938953410031 }10032 }10033 },10034 {10035 "Timestamp": 30071,10036 "Person": {10037 "Index": 25,10038 "BoundingBox": {10039 "Width": 0.26875001192092896,10040 "Height": 0.9277777671813965,10041 "Left": 0,10042 "Top": 0.0652777776122093210043 }10044 }10045 },10046 {10047 "Timestamp": 30113,10048 "Person": {10049 "Index": 25,10050 "BoundingBox": {10051 "Width": 0.24375000596046448,10052 "Height": 0.9111111164093018,10053 "Left": 0,10054 "Top": 0.083333335816860210055 }10056 }10057 },10058 {10059 "Timestamp": 30864,10060 "Person": {10061 "Index": 25,10062 "BoundingBox": {10063 "Width": 0.526562511920929,10064 "Height": 0.8930555582046509,10065 "Left": 0.46796876192092896,10066 "Top": 0.069444447755813610067 }10068 }10069 },10070 {10071 "Timestamp": 30989,10072 "Person": {10073 "Index": 25,10074 "BoundingBox": {10075 "Width": 0.38359373807907104,10076 "Height": 0.675000011920929,10077 "Left": 0.5960937738418579,10078 "Top": 0.298611104488372810079 }10080 }10081 },10082 {10083 "Timestamp": 31030,10084 "Person": {10085 "Index": 25,10086 "BoundingBox": {10087 "Width": 0.3929687440395355,10088 "Height": 0.6708333492279053,10089 "Left": 0.567187488079071,10090 "Top": 0.3041666746139526410091 }10092 }10093 },10094 {10095 "Timestamp": 31114,10096 "Person": {10097 "Index": 25,10098 "BoundingBox": {10099 "Width": 0.48750001192092896,10100 "Height": 0.9624999761581421,10101 "Left": 0.49921876192092896,10102 "Top": 0.0375000014901161210103 }10104 }10105 },10106 {10107 "Timestamp": 31114,10108 "Person": {10109 "Index": 26,10110 "BoundingBox": {10111 "Width": 0.24296875298023224,10112 "Height": 0.949999988079071,10113 "Left": 0,10114 "Top": 0.041666667908430110115 }10116 }10117 },10118 {10119 "Timestamp": 31197,10120 "Person": {10121 "Index": 25,10122 "BoundingBox": {10123 "Width": 0.39765626192092896,10124 "Height": 0.8986111283302307,10125 "Left": 0.573437511920929,10126 "Top": 0.1013888865709304810127 }10128 }10129 },10130 {10131 "Timestamp": 31197,10132 "Person": {10133 "Index": 26,10134 "BoundingBox": {10135 "Width": 0.24687500298023224,10136 "Height": 0.9319444298744202,10137 "Left": 0.0023437500931322575,10138 "Top": 0.0652777776122093210139 }10140 }10141 },10142 {10143 "Timestamp": 31239,10144 "Person": {10145 "Index": 25,10146 "BoundingBox": {10147 "Width": 0.4156250059604645,10148 "Height": 0.8374999761581421,10149 "Left": 0.5296875238418579,10150 "Top": 0.1624999940395355210151 }10152 }10153 },10154 {10155 "Timestamp": 31239,10156 "Person": {10157 "Index": 26,10158 "BoundingBox": {10159 "Width": 0.27421873807907104,10160 "Height": 0.8736110925674438,10161 "Left": 0,10162 "Top": 0.1263888925313949610163 }10164 }10165 },10166 {10167 "Timestamp": 31322,10168 "Person": {10169 "Index": 25,10170 "BoundingBox": {10171 "Width": 0.4273437559604645,10172 "Height": 0.7180555462837219,10173 "Left": 0.54296875,10174 "Top": 0.281944453716278110175 }10176 }10177 },10178 {10179 "Timestamp": 31322,10180 "Person": {10181 "Index": 26,10182 "BoundingBox": {10183 "Width": 0.26171875,10184 "Height": 0.6902777552604675,10185 "Left": 0.0007812500116415322,10186 "Top": 0.298611104488372810187 }10188 }10189 },10190 {10191 "Timestamp": 31448,10192 "Person": {10193 "Index": 26,10194 "BoundingBox": {10195 "Width": 0.18671874701976776,10196 "Height": 0.43194442987442017,10197 "Left": 0,10198 "Top": 0.568055570125579810199 }10200 }10201 },10202 {10203 "Timestamp": 31531,10204 "Person": {10205 "Index": 25,10206 "BoundingBox": {10207 "Width": 0.4984374940395355,10208 "Height": 0.7708333134651184,10209 "Left": 0.48359376192092896,10210 "Top": 0.229166671633720410211 }10212 }10213 }10214];...
WebGL.js
Source:WebGL.js
1import React from 'react'2import PropTypes from 'prop-types'3import styled from 'styled-components'4import { patchEmptyFields } from '../utils'5import * as proj from '../utils/projections'6import * as trans from '../utils/translations'7import { Vector2 } from '../utils/vectors'8import { COLORS } from '../utils/colors'9import { BBOX_CATEGORY } from '../utils/boundingBox'10const Container = styled.div`11 position: absolute;12 top: ${props => (props.top ? `${props.top}px` : 0)};13 left: ${props => (props.left ? `${props.left}px` : 0)};14 width: ${props => (props.width ? `${props.width}px` : '100%')};15 height: ${props => (props.height ? `${props.height}px` : '100%')};16 display: ${props => (props.visible ? 'block' : 'none')};17 z-index: 450;18 user-select: none;19 & > canvas {20 position: absolute;21 top: 0;22 left: 0;23 }24 & > canvas[name='bounding-boxes'] {25 z-index: 101;26 }27 & > canvas[name='3d-bounding-boxes'] {28 z-index: 102;29 }30 & > canvas[name='distortion-grid'] {31 z-index: 100;32 }33 & > canvas[name='ground-plane'] {34 z-index: 90;35 }36`37class WebGL extends React.Component {38 static propTypes = {39 top: PropTypes.number,40 left: PropTypes.number,41 width: PropTypes.number,42 height: PropTypes.number,43 visible: PropTypes.bool,44 manifest: PropTypes.object.isRequired,45 displayDistortionGrid: PropTypes.bool,46 displayGroundPlane: PropTypes.bool,47 displayBoundingBoxes: PropTypes.bool,48 display3dBoundingBoxes: PropTypes.bool,49 displayConvexHulls: PropTypes.bool,50 boundingBoxes: PropTypes.arrayOf(PropTypes.object),51 boundingBoxes3d: PropTypes.arrayOf(PropTypes.object),52 convexHulls: PropTypes.arrayOf(PropTypes.object)53 }54 static defaultProps = {55 top: 0,56 left: 0,57 width: null,58 height: null,59 visible: true,60 displayDistortionGrid: true,61 displayGroundPlane: false,62 displayBoundingBoxes: false,63 display3dBoundingBoxes: false,64 displayConvexHulls: false,65 boundingBoxes: [],66 boundingBoxes3d: [],67 convexHulls: []68 }69 constructor(props) {70 super(props)71 this.canvasGndPlane = null72 this.canvasDistGrid = null73 this.gl = null74 this.canvasWidth = window.innerWidth75 this.canvasHeight = window.innerHeight76 this.colorIndex = 077 }78 componentDidMount() {79 // Redraw the canvas when we re-render (which is triggered when the video is80 // resized)81 this.readjustCanvasSize()82 this.drawCanvas()83 this.drawBoundingBoxes()84 this.drawBoundingBoxes3d()85 this.drawConvexHulls()86 }87 componentDidUpdate() {88 // Redraw the canvas when we re-render (which is triggered when the video is89 // resized)90 this.readjustCanvasSize()91 this.drawCanvas()92 this.drawBoundingBoxes()93 this.drawBoundingBoxes3d()94 this.drawConvexHulls()95 }96 drawCanvas = () => {97 if (!this.canvasGndPlane || !this.canvasDistGrid) return98 const ctxGP = this.canvasGndPlane.getContext('2d')99 const ctxDG = this.canvasDistGrid.getContext('2d')100 // Disable anti-aliasing101 ctxGP.imageSmoothingEnabled = false102 ctxDG.imageSmoothingEnabled = false103 // Ground plane104 this.drawGrid(ctxGP, this.calibratedPtTranslator, 0.25, 0, 10, -8, 8)105 // Distortion grid106 this.drawPointBox(107 ctxDG,108 this.calibratedPtTranslator,109 0.25,110 -10,111 10,112 -10,113 10114 )115 }116 drawScaledPixel = (ctx, vector, color = 'white') => {117 const { resolution } = this.state118 ctx.lineWidth = 1119 ctx.fillStyle = color120 ctx.beginPath()121 // console.log(`input (${vector.x}, ${vector.y})`)122 const scaledVector = trans.scaleImageToCanvas(123 vector,124 resolution.x,125 resolution.y,126 this.canvasWidth,127 this.canvasHeight128 )129 // console.log(`drawing pixel at (${scaledVector.x}, ${scaledVector.y})`)130 ctx.fillRect(scaledVector.x, scaledVector.y, 2, 2)131 // ctx.arc(scaledVector.x, scaledVector.y, 1, 0, 2 * Math.PI)132 ctx.closePath()133 }134 drawGrid = (ctx, translator, stepSize, zMin, zMax, xMin, xMax) => {135 const y = 1136 let coord137 let calibratedPt138 const baseRgb = '151, 151, 151'139 ctx.lineWidth = 1140 // VERTICAL GRID LINES & POINTS @ INTERSECTIONS141 for (let x = xMin; x <= xMax; x += stepSize) {142 ctx.beginPath()143 let firstZ144 let lastZ145 let alpha146 for (let z = zMin; z <= zMax; z += stepSize) {147 calibratedPt = new Vector2(x / z, y / z)148 // Passing in "true" as the third arg will validate the camera149 // coordinate by projecting & unprojecting and checking if it's within a150 // pre-defined tolerance. Invaild points will return null.151 coord = translator(calibratedPt.x, calibratedPt.y, true)152 // Only draw if the point is valid153 if (coord.x != null && coord.y !== null) {154 // Adjust the alpha of the point to be drawn depending on the depth (z)155 alpha = Math.max(((zMax - z - zMin) / (zMax - zMin)).toFixed(2), 0.2)156 ctx.fillStyle = `rgba(${baseRgb}, ${alpha})`157 // console.log(`at z ${z}, @ ${alpha}`)158 // ctx.fillRect(coord.x, coord.y, 2, 2)159 ctx.lineTo(coord.x, coord.y)160 }161 // Store the first and last coordinate to use in our gradient for162 // drawing vertical lines163 if (coord.x !== null && !firstZ) {164 firstZ = Object.assign({}, coord)165 }166 if (coord.x) {167 lastZ = Object.assign({}, coord)168 }169 }170 // If the first and last coordinates were captured...171 if (firstZ && lastZ) {172 // Create a gradient from point firstZ to lastZ and draw the stroke173 const gradient = ctx.createLinearGradient(174 firstZ.x,175 firstZ.y,176 lastZ.x,177 lastZ.y178 )179 gradient.addColorStop(0, `rgba(${baseRgb}, 1)`)180 gradient.addColorStop(1, `rgba(${baseRgb}, 0)`)181 ctx.strokeStyle = gradient182 ctx.lineWidth = 4183 ctx.moveTo(firstZ.x, firstZ.y)184 ctx.lineTo(lastZ.x, lastZ.y)185 ctx.lineWidth = 1186 }187 ctx.stroke()188 ctx.closePath()189 }190 // HORIZONTAL GRID LINES191 for (let z = zMin; z <= zMax; z += stepSize) {192 let previousPt193 ctx.beginPath()194 let alpha = Math.max(((zMax - z - zMin) / (zMax - zMin)).toFixed(2), 0.2)195 // Step the alpha of the horizontal lines for every z196 ctx.strokeStyle = `rgba(${baseRgb}, ${alpha})`197 for (let x = xMin; x <= xMax; x += stepSize) {198 calibratedPt = new Vector2(x / z, y / z)199 // Passing in true will filter out invalid points200 coord = translator(calibratedPt.x, calibratedPt.y, true)201 // Only draw if the point returned in valid202 if (coord.x != null && coord.y !== null) {203 if (!previousPt) {204 ctx.lineTo(coord.x, coord.y)205 } else {206 ctx.quadraticCurveTo(coord.x, coord.y, coord.x, coord.y)207 }208 previousPt = {209 x: coord.x,210 y: coord.y211 }212 }213 }214 ctx.stroke()215 ctx.closePath()216 }217 }218 drawPointBox = (219 ctx,220 translator,221 size = 1 / 10,222 xMin = -3,223 xMax = 3,224 yMin = -3,225 yMax = 3226 ) => {227 let coord228 ctx.lineWidth = 1229 ctx.strokeStyle = 'lightgrey'230 ctx.fillStyle = 'green'231 // Horizontal232 for (let j = yMin; j < yMax; j += size) {233 ctx.beginPath()234 for (let k = xMin; k < xMax; k += size) {235 coord = translator(k, j)236 ctx.fillRect(coord.x, coord.y, 2, 2)237 ctx.lineTo(coord.x, coord.y)238 }239 ctx.stroke()240 ctx.closePath()241 }242 // Vertical243 for (let k = xMin; k < xMax; k += size) {244 ctx.beginPath()245 for (let j = yMin; j < yMax; j += size) {246 coord = translator(k, j)247 ctx.fillRect(coord.x, coord.y, 2, 2)248 ctx.lineTo(coord.x, coord.y)249 }250 ctx.stroke()251 ctx.closePath()252 }253 }254 calibratedPtTranslator = (x, y, validate = false) => {255 const {256 manifest: { intrinsics: { resolution, focalLength, cameraCenter, kVals } }257 } = this.props258 const calibratedPoint = new Vector2(x, y)259 const result = proj.ProjectCalibratedPointToImage(260 calibratedPoint,261 focalLength,262 cameraCenter,263 kVals264 )265 let pixel = result266 // If we're validating the traversal (projecting and unprojecting), return267 // a null vector if we're beyond the tolerances268 if (validate === true) {269 pixel = this.calibratedValidator(calibratedPoint, result)270 if (pixel.x === null || pixel.y === null) {271 return pixel272 }273 }274 return trans.scaleImageToCanvas(275 pixel,276 resolution.x,277 resolution.y,278 this.canvasWidth,279 this.canvasHeight280 )281 }282 /**283 * Given a calibrated point and a pixel point, use the unproject function to284 * make sure it's a valid point within a certain margin of error; otherwise,285 * return null (and don't render the point)286 * @param {Object} calibratedPt Vector2 of the calibrated point's (x, y)287 * @param {Object} pixelPt Vector2 of the pixel point's (x, y)288 * @param {Number} tolerance Tolerance289 * @return {Object} Vector2 of the pixel point if valid290 */291 calibratedValidator = (calibratedPt, pixelPt, tolerance = 4) => {292 const {293 manifest: { intrinsics: { focalLength, cameraCenter, kVals } }294 } = this.props295 const unprojCalibratedPt = proj.UnprojectImageToCalibratedPoint(296 pixelPt,297 focalLength,298 cameraCenter,299 kVals300 )301 // Check if it the value is within the tolerances302 if (303 Math.abs(unprojCalibratedPt.x) - Math.abs(tolerance) <=304 Math.abs(calibratedPt.x) &&305 Math.abs(calibratedPt.x) <=306 Math.abs(unprojCalibratedPt.x) + Math.abs(tolerance) &&307 Math.abs(unprojCalibratedPt.y) - Math.abs(tolerance) <=308 Math.abs(calibratedPt.y) &&309 Math.abs(calibratedPt.y) <=310 Math.abs(unprojCalibratedPt.y) + Math.abs(tolerance)311 ) {312 return pixelPt313 } else {314 return new Vector2(null, null)315 }316 }317 /**318 * Update all canvases on the component to match the dimensions passed in from319 * props320 */321 readjustCanvasSize = () => {322 const { width, height } = this.props323 this.canvasWidth = width ? width : window.innerWidth324 this.canvasHeight = height ? height : window.innerHeight325 if (this.canvasGndPlane) {326 this.canvasGndPlane.width = width ? width : window.innerWidth327 this.canvasGndPlane.height = height ? height : window.innerHeight328 }329 if (this.canvasDistGrid) {330 this.canvasDistGrid.width = width ? width : window.innerWidth331 this.canvasDistGrid.height = height ? height : window.innerHeight332 }333 if (this.canvasBBox) {334 this.canvasBBox.width = width ? width : window.innerWidth335 this.canvasBBox.height = height ? height : window.innerHeight336 }337 if (this.canvas3dBBox) {338 this.canvas3dBBox.width = width ? width : window.innerWidth339 this.canvas3dBBox.height = height ? height : window.innerHeight340 }341 }342 /**343 * Decodes a bounding box category to a color344 * @param {String} categoryName Category name345 * @return {String} Color name346 */347 static decodeBBoxCategoryToColor(categoryName) {348 const name = categoryName ? categoryName.toUpperCase() : ''349 switch (name) {350 case 'PERSON':351 return 'green'352 case 'ANIMAL':353 return 'pink'354 case 'BICYCLE':355 return 'DarkCyan'356 case 'MOTORBIKE':357 return 'GoldenRod'358 case 'CAR':359 return 'DarkOrchid'360 case 'BUS':361 return 'OrangeRed'362 case 'TRUCK':363 return 'LightYellow'364 default:365 return 'white'366 }367 }368 /**369 * Draws a set of bounding boxes on the canvas from the boundingBoxes props370 * (Array)371 */372 drawBoundingBoxes = () => {373 const {374 boundingBoxes,375 manifest: { intrinsics: { resolution } }376 } = this.props377 const INNER_BBOX_OFFSET = 7378 if (this.canvasBBox) {379 // Get the canvas context380 const ctx = this.canvasBBox.getContext('2d')381 // Make sure it's an array before iterating382 if (!Array.isArray(boundingBoxes)) {383 console.log(384 'Cannot render bounding boxes; boundingBoxes is not an array'385 )386 return387 }388 let boundingBox = null389 let color = null390 let canvasCoordTopLeft391 let canvasCoordBottomRight392 let boxWidthInCanvas393 let boxHeightInCanvas394 let label395 for (let k = 0; k < boundingBoxes.length; k++) {396 boundingBox = boundingBoxes[k]397 patchEmptyFields(boundingBox.category, ['type'], 'UNKNOWN')398 // Get the top left (x, y) and convert it to a canvas coordinate399 canvasCoordTopLeft = trans.scaleImageToCanvas(400 new Vector2(boundingBox.topLeftX, boundingBox.topLeftY),401 resolution.x,402 resolution.y,403 this.canvasWidth,404 this.canvasHeight405 )406 // Calculate the bottom right (x, y) and convert it to a canvas407 // coordinate408 canvasCoordBottomRight = trans.scaleImageToCanvas(409 new Vector2(410 boundingBox.topLeftX + boundingBox.extentsX,411 boundingBox.topLeftY + boundingBox.extentsY412 ),413 resolution.x,414 resolution.y,415 this.canvasWidth,416 this.canvasHeight417 )418 // Derive the width of the box in canvas coordinates419 boxWidthInCanvas = Math.abs(420 canvasCoordTopLeft.x - canvasCoordBottomRight.x421 )422 boxHeightInCanvas = Math.abs(423 canvasCoordTopLeft.y - canvasCoordBottomRight.y424 )425 // Draw the outer bounding box with the color varying depending on its426 // category427 color = WebGL.decodeBBoxCategoryToColor(boundingBox.category.type)428 WebGL.drawBoxStroke(429 ctx,430 canvasCoordTopLeft.x,431 canvasCoordTopLeft.y,432 boxWidthInCanvas,433 boxHeightInCanvas,434 color,435 5,436 []437 )438 // Draw a label with the category name on top of the outer bounding439 // box440 label = BBOX_CATEGORY[boundingBox.category.type]441 label += ` (${boundingBox.instanceId ? boundingBox.instanceId : '-1'})`442 WebGL.drawBoxLabel(443 ctx,444 canvasCoordTopLeft.x,445 canvasCoordTopLeft.y - 5,446 color, // Inherits the color from the decode above447 label448 )449 // Draw an inner bounding box that's smaller by a certain offset450 // (INNER_BBOX_OFFSET) and is color-coded depending on the instance ID451 color = COLORS[boundingBox.instanceId % COLORS.length]452 WebGL.drawBoxStroke(453 ctx,454 canvasCoordTopLeft.x + INNER_BBOX_OFFSET,455 canvasCoordTopLeft.y + INNER_BBOX_OFFSET,456 boxWidthInCanvas - INNER_BBOX_OFFSET * 2,457 boxHeightInCanvas - INNER_BBOX_OFFSET * 2,458 color,459 2,460 [5, 1]461 )462 }463 }464 }465 /**466 * Draws a set of 3D bounding boxes on the canvas from the boundingBoxes props467 * (Array)468 */469 drawBoundingBoxes3d = () => {470 const {471 boundingBoxes3d,472 manifest: {473 intrinsics: { resolution, focalLength, cameraCenter, kVals }474 },475 display3dBoundingBoxes476 } = this.props477 if (display3dBoundingBoxes && this.canvas3dBBox) {478 // Get the canvas context479 const ctx = this.canvas3dBBox.getContext('2d')480 const SAMPLE_SIZE = 28 // Should be an even number for the best results481 // Make sure it's an array before iterating482 if (!Array.isArray(boundingBoxes3d)) {483 console.log(484 'Cannot render bounding boxes; boundingBoxes3d is not an array'485 )486 return487 }488 let boundingBox = null489 let color = null490 let label491 let vertices = []492 let calibratedVertices = []493 let scaledVertices = []494 let path495 for (let k = 0; k < boundingBoxes3d.length; k++) {496 boundingBox = boundingBoxes3d[k]497 patchEmptyFields(boundingBox, ['extentsX', 'extentsY', 'extentsZ'])498 patchEmptyFields(boundingBox.pose, [499 'translationX',500 'translationY',501 'translationZ'502 ])503 // Convert meter-space coordinates into the camera space via504 // (x,y,z) => (x/z, y/z)505 // (Near) Top left => top right506 for (507 let n = -boundingBox.extentsX / 2;508 n <= boundingBox.extentsX / 2;509 n += boundingBox.extentsX / SAMPLE_SIZE510 ) {511 vertices.push(512 new Vector2(513 (boundingBox.pose.translationX + n) /514 Math.max(515 0.25,516 boundingBox.pose.translationZ - boundingBox.extentsZ / 2517 ),518 (boundingBox.pose.translationY - boundingBox.extentsY / 2) /519 Math.max(520 0.25,521 boundingBox.pose.translationZ - boundingBox.extentsZ / 2522 )523 )524 )525 }526 // (Near) Top right => bottom right527 for (528 let n = -boundingBox.extentsY / 2;529 n <= boundingBox.extentsY / 2;530 n += boundingBox.extentsY / SAMPLE_SIZE531 ) {532 vertices.push(533 new Vector2(534 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /535 Math.max(536 0.25,537 boundingBox.pose.translationZ - boundingBox.extentsZ / 2538 ),539 (boundingBox.pose.translationY + n) /540 Math.max(541 0.25,542 boundingBox.pose.translationZ - boundingBox.extentsZ / 2543 )544 )545 )546 }547 // (Near) Bottom right => bottom left548 for (549 let n = boundingBox.extentsX / 2;550 n >= -boundingBox.extentsX / 2;551 n -= boundingBox.extentsX / SAMPLE_SIZE552 ) {553 vertices.push(554 new Vector2(555 (boundingBox.pose.translationX + n) /556 Math.max(557 0.25,558 boundingBox.pose.translationZ - boundingBox.extentsZ / 2559 ),560 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /561 Math.max(562 0.25,563 boundingBox.pose.translationZ - boundingBox.extentsZ / 2564 )565 )566 )567 }568 // (Near) Bottom left => top left569 for (570 let n = boundingBox.extentsY / 2;571 n >= -boundingBox.extentsY / 2;572 n -= boundingBox.extentsY / SAMPLE_SIZE573 ) {574 vertices.push(575 new Vector2(576 (boundingBox.pose.translationX - boundingBox.extentsX / 2) /577 Math.max(578 0.25,579 boundingBox.pose.translationZ - boundingBox.extentsZ / 2580 ),581 (boundingBox.pose.translationY + n) /582 Math.max(583 0.25,584 boundingBox.pose.translationZ - boundingBox.extentsZ / 2585 )586 )587 )588 }589 // (Near) Top left => (Far) Top left590 for (591 let n = -boundingBox.extentsZ / 2;592 n <= boundingBox.extentsZ / 2;593 n += boundingBox.extentsZ / SAMPLE_SIZE594 ) {595 vertices.push(596 new Vector2(597 (boundingBox.pose.translationX - boundingBox.extentsX / 2) /598 Math.max(0.25, boundingBox.pose.translationZ + n),599 (boundingBox.pose.translationY - boundingBox.extentsY / 2) /600 Math.max(0.25, boundingBox.pose.translationZ + n)601 )602 )603 }604 // (Far) Top left => top right605 for (606 let n = -boundingBox.extentsX / 2;607 n <= boundingBox.extentsX / 2;608 n += boundingBox.extentsX / SAMPLE_SIZE609 ) {610 vertices.push(611 new Vector2(612 (boundingBox.pose.translationX + n) /613 Math.max(614 0.25,615 boundingBox.pose.translationZ + boundingBox.extentsZ / 2616 ),617 (boundingBox.pose.translationY - boundingBox.extentsY / 2) /618 Math.max(619 0.25,620 boundingBox.pose.translationZ + boundingBox.extentsZ / 2621 )622 )623 )624 }625 // are we missing one here?626 // (Far) Top right => (Near) top right => (Far) Top right627 for (628 let n = -boundingBox.extentsZ / 2;629 n <= boundingBox.extentsZ / 2;630 n += boundingBox.extentsZ / SAMPLE_SIZE631 ) {632 vertices.push(633 new Vector2(634 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /635 Math.max(0.25, boundingBox.pose.translationZ + n),636 (boundingBox.pose.translationY - boundingBox.extentsY / 2) /637 Math.max(0.25, boundingBox.pose.translationZ + n)638 )639 )640 }641 for (642 let n = boundingBox.extentsZ / 2;643 n >= -boundingBox.extentsZ / 2;644 n -= boundingBox.extentsZ / SAMPLE_SIZE645 ) {646 vertices.push(647 new Vector2(648 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /649 Math.max(0.25, boundingBox.pose.translationZ + n),650 (boundingBox.pose.translationY - boundingBox.extentsY / 2) /651 Math.max(0.25, boundingBox.pose.translationZ + n)652 )653 )654 }655 // (Far) Top right => bottom right656 for (657 let n = -boundingBox.extentsY / 2;658 n <= boundingBox.extentsY / 2;659 n += boundingBox.extentsY / SAMPLE_SIZE660 ) {661 vertices.push(662 new Vector2(663 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /664 Math.max(665 0.25,666 boundingBox.pose.translationZ + boundingBox.extentsZ / 2667 ),668 (boundingBox.pose.translationY + n) /669 Math.max(670 0.25,671 boundingBox.pose.translationZ + boundingBox.extentsZ / 2672 )673 )674 )675 }676 // (Far) Bottom right => (Near) Bottom right => (Far) Bottom right677 for (678 let n = -boundingBox.extentsZ / 2;679 n <= boundingBox.extentsZ / 2;680 n += boundingBox.extentsZ / SAMPLE_SIZE681 ) {682 vertices.push(683 new Vector2(684 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /685 Math.max(0.25, boundingBox.pose.translationZ + n),686 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /687 Math.max(0.25, boundingBox.pose.translationZ + n)688 )689 )690 }691 for (692 let n = boundingBox.extentsZ / 2;693 n >= -boundingBox.extentsZ / 2;694 n -= boundingBox.extentsZ / SAMPLE_SIZE695 ) {696 vertices.push(697 new Vector2(698 (boundingBox.pose.translationX + boundingBox.extentsX / 2) /699 Math.max(0.25, boundingBox.pose.translationZ + n),700 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /701 Math.max(0.25, boundingBox.pose.translationZ + n)702 )703 )704 }705 // (Far) Bottom right => bottom left706 for (707 let n = boundingBox.extentsX / 2;708 n >= -boundingBox.extentsX / 2;709 n -= boundingBox.extentsX / SAMPLE_SIZE710 ) {711 vertices.push(712 new Vector2(713 (boundingBox.pose.translationX + n) /714 Math.max(715 0.25,716 boundingBox.pose.translationZ + boundingBox.extentsZ / 2717 ),718 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /719 Math.max(720 0.25,721 boundingBox.pose.translationZ + boundingBox.extentsZ / 2722 )723 )724 )725 }726 // (Far) Bottom left => (Near) Bottom left => (Far) Bottom left727 for (728 let n = -boundingBox.extentsZ / 2;729 n <= boundingBox.extentsZ / 2;730 n += boundingBox.extentsZ / SAMPLE_SIZE731 ) {732 vertices.push(733 new Vector2(734 (boundingBox.pose.translationX - boundingBox.extentsX / 2) /735 Math.max(0.25, boundingBox.pose.translationZ + n),736 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /737 Math.max(0.25, boundingBox.pose.translationZ + n)738 )739 )740 }741 for (742 let n = boundingBox.extentsZ / 2;743 n >= -boundingBox.extentsZ / 2;744 n -= boundingBox.extentsZ / SAMPLE_SIZE745 ) {746 vertices.push(747 new Vector2(748 (boundingBox.pose.translationX - boundingBox.extentsX / 2) /749 Math.max(0.25, boundingBox.pose.translationZ + n),750 (boundingBox.pose.translationY + boundingBox.extentsY / 2) /751 Math.max(0.25, boundingBox.pose.translationZ + n)752 )753 )754 }755 // (Far) Bottom left => top left756 for (757 let n = boundingBox.extentsY / 2;758 n >= -boundingBox.extentsY / 2;759 n -= boundingBox.extentsY / SAMPLE_SIZE760 ) {761 vertices.push(762 new Vector2(763 (boundingBox.pose.translationX - boundingBox.extentsX / 2) /764 Math.max(765 0.25,766 boundingBox.pose.translationZ + boundingBox.extentsZ / 2767 ),768 (boundingBox.pose.translationY + n) /769 Math.max(770 0.25,771 boundingBox.pose.translationZ + boundingBox.extentsZ / 2772 )773 )774 )775 }776 calibratedVertices = vertices.map((v, i) =>777 proj.ProjectCalibratedPointToImage(778 v,779 focalLength,780 cameraCenter,781 kVals782 )783 )784 scaledVertices = calibratedVertices.map((v, i) =>785 trans.scaleImageToCanvas(786 v,787 resolution.x,788 resolution.y,789 this.canvasWidth,790 this.canvasHeight791 )792 )793 // Draw the outer bounding box with the color varying depending on its794 // category795 color = WebGL.decodeBBoxCategoryToColor(boundingBox.category.type)796 path = new Path2D()797 scaledVertices.forEach(v => path.lineTo(v.x, v.y))798 ctx.lineWidth = 2799 ctx.strokeStyle = color800 ctx.stroke(path)801 // Draw a label with the category name on top of the outer bounding802 // box803 label = BBOX_CATEGORY[boundingBox.category.type]804 ? BBOX_CATEGORY[boundingBox.category.type]805 : 'Unknown'806 label += ` (${boundingBox.instanceId})`807 WebGL.drawBoxLabel(808 ctx,809 scaledVertices[0].x,810 scaledVertices[0].y - 10,811 color, // Inherits the color from the decode above812 label813 )814 // Clear the array for the next bounding box815 vertices = []816 }817 }818 }819 /**820 * Draws a convex hull around objects821 * @return {[type]} [description]822 */823 drawConvexHulls = () => {824 const {825 convexHulls,826 manifest: {827 intrinsics: { resolution, focalLength, cameraCenter, kVals }828 },829 displayConvexHulls830 } = this.props831 if (displayConvexHulls && this.canvas3dBBox) {832 // Get the canvas context833 const ctx = this.canvas3dBBox.getContext('2d')834 // Make sure it's an array before iterating835 if (!Array.isArray(convexHulls)) {836 console.log('Cannot render convex hulls; convexHulls is not an array')837 return838 }839 let convexHull840 let color841 let path842 let label843 let hullUpperVertices = []844 let hullLowerVertices = []845 let hullEdges = []846 for (let k = 0; k < convexHulls.length; k++) {847 convexHull = convexHulls[k]848 patchEmptyFields(convexHulls, ['xs', 'extentsY', 'zs'])849 patchEmptyFields(convexHulls.pose, [850 'translationX',851 'translationY',852 'translationZ'853 ])854 for (let n = 0; n < convexHull.xs.length; n++) {855 let x = convexHull.xs[n]856 let z = convexHull.zs[n]857 let upper = new Vector2(858 x / z,859 convexHull.pose.translationY - convexHull.extentsY / z860 )861 let lower = new Vector2(862 x / z,863 convexHull.pose.translationY + convexHull.extentsY / z864 )865 hullUpperVertices.push(upper)866 hullLowerVertices.push(lower)867 hullEdges.push(upper)868 hullEdges.push(lower)869 }870 hullUpperVertices = hullUpperVertices871 .map((v, i) =>872 proj.ProjectCalibratedPointToImage(873 v,874 focalLength,875 cameraCenter,876 kVals877 )878 )879 .map((v, i) =>880 trans.scaleImageToCanvas(881 v,882 resolution.x,883 resolution.y,884 this.canvasWidth,885 this.canvasHeight886 )887 )888 hullLowerVertices = hullLowerVertices889 .map((v, i) =>890 proj.ProjectCalibratedPointToImage(891 v,892 focalLength,893 cameraCenter,894 kVals895 )896 )897 .map((v, i) =>898 trans.scaleImageToCanvas(899 v,900 resolution.x,901 resolution.y,902 this.canvasWidth,903 this.canvasHeight904 )905 )906 hullEdges = hullEdges907 .map((v, i) =>908 proj.ProjectCalibratedPointToImage(909 v,910 focalLength,911 cameraCenter,912 kVals913 )914 )915 .map((v, i) =>916 trans.scaleImageToCanvas(917 v,918 resolution.x,919 resolution.y,920 this.canvasWidth,921 this.canvasHeight922 )923 )924 color = WebGL.decodeBBoxCategoryToColor(convexHull.category.type)925 ctx.lineWidth = 2926 ctx.strokeStyle = color927 // Upper928 path = new Path2D()929 hullUpperVertices.forEach(v => path.lineTo(v.x, v.y))930 path.closePath()931 ctx.stroke(path)932 // Lower933 path = new Path2D()934 hullLowerVertices.forEach(v => path.lineTo(v.x, v.y))935 path.closePath()936 ctx.stroke(path)937 // Edges938 path = new Path2D()939 for (let n = 0; n < hullEdges.length; n += 2) {940 let u = hullEdges[n]941 let v = hullEdges[n + 1]942 path.moveTo(u.x, u.y)943 path.lineTo(v.x, v.y)944 }945 ctx.stroke(path)946 // Draw a label with the category name on top of the outer bounding947 // box948 label = BBOX_CATEGORY[convexHull.category.type]949 ? BBOX_CATEGORY[convexHull.category.type]950 : 'Unknown'951 label += ` (${convexHull.instanceId})`952 WebGL.drawBoxLabel(953 ctx,954 hullUpperVertices[0].x,955 hullUpperVertices[0].y - 10,956 color, // Inherits the color from the decode above957 label958 )959 // Clear the array for the next bounding box960 hullEdges = []961 hullUpperVertices = []962 hullLowerVertices = []963 }964 }965 }966 /**967 * Draws a box on the given canvas context968 * @param {Object} ctx Canvas context969 * @param {Number} x x image coordinate970 * @param {Number} y y image coordinate971 * @param {Number} width Width in image coordinates972 * @param {Number} height Height in image coordinates973 * @param {String} color Color of the box's stroke974 * @param {Number} lineWidth Line width975 * @param {Array} dash Dash pattern for the stroke976 */977 static drawBoxStroke(978 ctx,979 x,980 y,981 width,982 height,983 color = 'white',984 lineWidth = 5,985 dash = []986 ) {987 ctx.strokeStyle = color ? color : 'white'988 ctx.lineWidth = lineWidth989 ctx.setLineDash(dash)990 ctx.strokeRect(x, y, width, height)991 }992 /**993 * Draws a label above the bounding box994 * @param {Object} ctx Canvas context995 * @param {Number} x x image coordinate996 * @param {Number} y y image coordinate997 * @param {String} color Color for text998 * @param {String} text Text to display999 */1000 static drawBoxLabel(ctx, x, y, color = null, text = '') {1001 ctx.fillStyle = color1002 ctx.font = '14px Helvetica, serif'1003 ctx.fillText(text, x, y)1004 }1005 render() {1006 const {1007 top,1008 left,1009 width,1010 height,1011 visible,1012 displayGroundPlane,1013 displayDistortionGrid,1014 displayBoundingBoxes,1015 display3dBoundingBoxes1016 } = this.props1017 return (1018 <Container1019 visible={visible}1020 top={top}1021 left={left}1022 width={width}1023 height={height}1024 >1025 <canvas1026 name="bounding-boxes"1027 ref={c => (this.canvasBBox = c)}1028 style={{ display: displayBoundingBoxes ? 'block' : 'none' }}1029 />1030 <canvas1031 name="3d-bounding-boxes"1032 ref={c => (this.canvas3dBBox = c)}1033 style={{ display: display3dBoundingBoxes ? 'block' : 'none' }}1034 />1035 <canvas1036 name="ground-plane"1037 ref={c => (this.canvasGndPlane = c)}1038 style={{ display: displayGroundPlane ? 'block' : 'none' }}1039 />1040 <canvas1041 name="distortion-grid"1042 ref={c => (this.canvasDistGrid = c)}1043 style={{ display: displayDistortionGrid ? 'block' : 'none' }}1044 />1045 </Container>1046 )1047 }1048}...
datatable-scroll-tests.js
Source:datatable-scroll-tests.js
1YUI.add('datatable-scroll-tests', function(Y) {2var suite = new Y.Test.Suite("DataTable: Scroll"),3 keys = Y.Object.keys;4suite.add(new Y.Test.Case({5 name: "lifecycle and instantiation",6 "Y.DataTable should be augmented": function () {7 Y.Assert.isTrue(8 new Y.DataTable().hasImpl(Y.DataTable.Scrollable));9 },10 "Y.DataTable.Base should not be augmented": function () {11 Y.Assert.isFalse(12 new Y.DataTable.Base().hasImpl(Y.DataTable.Scrollable));13 },14 "Y.DataTable constructor should not error": function () {15 var table = new Y.DataTable({16 columns: ['a'],17 data: [{a:1}]18 });19 Y.Assert.isInstanceOf(Y.DataTable, table);20 Y.Assert.isTrue(table.hasImpl(Y.DataTable.Scrollable));21 }22}));23suite.add(new Y.Test.Case({24 name: "scrollable attribute",25 tearDown: function () {26 if (this.table) {27 this.table.destroy();28 }29 },30 "test scrollable values": function () {31 var config = {32 columns: ['a'],33 data: [{a:1}]34 }, table;35 table = new Y.DataTable(config);36 Y.Assert.isFalse(table.get('scrollable'));37 config.scrollable = false;38 table = new Y.DataTable(config);39 Y.Assert.isFalse(table.get('scrollable'));40 config.scrollable = true;41 table = new Y.DataTable(config);42 Y.Assert.areSame('xy', table.get('scrollable'));43 config.scrollable = 'x';44 table = new Y.DataTable(config);45 Y.Assert.areSame('x', table.get('scrollable'));46 config.scrollable = 'y';47 table = new Y.DataTable(config);48 Y.Assert.areSame('y', table.get('scrollable'));49 config.scrollable = 'xy';50 table = new Y.DataTable(config);51 Y.Assert.areSame('xy', table.get('scrollable'));52 /*53 * Commented out until #2528732 is fixed54 config.scrollable = 'ab';55 table = new Y.DataTable(config);56 Y.Assert.isFalse(table.get('scrollable'));57 config.scrollable = ['x', 'y'];58 table = new Y.DataTable(config);59 Y.Assert.isFalse(table.get('scrollable'));60 config.scrollable = { x: true };61 table = new Y.DataTable(config);62 Y.Assert.isFalse(table.get('scrollable'));63 */64 },65 "test set('scrollable')": function () {66 var table = this.table = new Y.DataTable({67 columns: ['a'],68 data: [{a:1}]69 });70 Y.Assert.isFalse(table.get('scrollable'));71 table.set('scrollable', false);72 Y.Assert.isFalse(table.get('scrollable'));73 table.set('scrollable', true);74 Y.Assert.areSame('xy', table.get('scrollable'));75 table.set('scrollable', 'x');76 Y.Assert.areSame('x', table.get('scrollable'));77 table.set('scrollable', 'y');78 Y.Assert.areSame('y', table.get('scrollable'));79 table.set('scrollable', 'xy');80 Y.Assert.areSame('xy', table.get('scrollable'));81 table.set('scrollable', ['x','y']);82 Y.Assert.areSame('xy', table.get('scrollable'));83 table.set('scrollable', { x: true });84 Y.Assert.areSame('xy', table.get('scrollable'));85 table.set('scrollable', false);86 Y.Assert.isFalse(table.get('scrollable'));87 },88 "render() with 'scrollable' unset should not include scrolling UI": function () {89 var table = this.table = new Y.DataTable({90 columns: ['a'],91 data: [{a:1}]92 }).render(),93 boundingBox = table.get('boundingBox');94 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),95 'Default table has X scroll node');96 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),97 'Default table has Y scroll node');98 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),99 'Default table has Y scroll container node');100 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),101 'Default table has virtual scrollbar node');102 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),103 'Default table has caption table node');104 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),105 'Default table has fixed header node');106 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),107 'Default table has scrollable-x class');108 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),109 'Default table has scrollable-y class');110 },111 "render() with scrollable set, but neither width/height should not render scroll UI": function () {112 var table = this.table = new Y.DataTable({113 columns: ['a'],114 data: [{a:1}],115 scrollable: 'x'116 }).render(),117 boundingBox = table.get('boundingBox');118 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),119 'Default table has X scroll node');120 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),121 'Default table has Y scroll node');122 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),123 'Default table has Y scroll container node');124 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),125 'Default table has virtual scrollbar node');126 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),127 'Default table has caption table node');128 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),129 'Default table has fixed header node');130 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),131 'Default table has scrollable-x class');132 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),133 'Default table has scrollable-y class');134 table.destroy();135 table = this.table = new Y.DataTable({136 columns: ['a'],137 data: [{a:1}],138 scrollable: 'y'139 }).render();140 boundingBox = table.get('boundingBox');141 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),142 'Default table has X scroll node');143 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),144 'Default table has Y scroll node');145 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),146 'Default table has Y scroll container node');147 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),148 'Default table has virtual scrollbar node');149 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),150 'Default table has caption table node');151 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),152 'Default table has fixed header node');153 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),154 'Default table has scrollable-x class');155 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),156 'Default table has scrollable-y class');157 table.destroy();158 table = this.table = new Y.DataTable({159 columns: ['a'],160 data: [{a:1}],161 scrollable: 'xy'162 }).render();163 boundingBox = table.get('boundingBox');164 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),165 'Default table has X scroll node');166 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),167 'Default table has Y scroll node');168 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),169 'Default table has Y scroll container node');170 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),171 'Default table has virtual scrollbar node');172 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),173 'Default table has caption table node');174 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),175 'Default table has fixed header node');176 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),177 'Default table has scrollable-x class');178 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),179 'Default table has scrollable-y class');180 },181 "render() with scrollable: x + width should render x scroller": function () {182 var table = this.table = new Y.DataTable({183 columns: ['a'],184 data: [{a:1}],185 scrollable: 'x',186 width: '100px'187 }).render(),188 boundingBox = table.get('boundingBox');189 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),190 'X scrolling table missing X scroll node');191 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),192 'X scrolling table has Y scroll node');193 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),194 'X scrolling table has Y scroll container node');195 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),196 'X scrolling table has virtual scrollbar node');197 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),198 'X scrolling table has caption table node');199 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),200 'X scrolling table has fixed header node');201 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),202 'X scrolling table missing scrollable-x class');203 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),204 'X scrolling table has scrollable-y class');205 },206 "render() with scrollable: y + height should render y scroll DOM": function () {207 var table = this.table = new Y.DataTable({208 columns: ['a'],209 data: [{a:1}],210 scrollable: 'y',211 height: '100px'212 }).render(),213 boundingBox = table.get('boundingBox');214 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),215 'Y scrolling table has X scroll node');216 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),217 'Y scrolling table missing Y scroll node');218 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),219 'Y scrolling table missing Y scroll container node');220 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),221 'Y scrolling table missing virtual scrollbar node');222 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),223 'Y scrolling table has caption table node');224 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),225 'Y scrolling table missing fixed header node');226 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),227 'Y scrolling table has scrollable-x class');228 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),229 'Y scrolling table missing scrollable-y class');230 },231 "render() with scrollable: xy + height, width should render x and y scroll DOM": function () {232 var table = this.table = new Y.DataTable({233 columns: ['a'],234 data: [{a:1}],235 scrollable: 'xy',236 height: '100px',237 width: '100px'238 }).render(),239 boundingBox = table.get('boundingBox');240 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),241 'XY scrolling table missing X scroll node');242 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),243 'XY scrolling table missing Y scroll node');244 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),245 'XY scrolling table missing Y scroll container node');246 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),247 'XY scrolling table missing virtual scrollbar node');248 Y.Assert.isNull(boundingBox.one('.yui3-datatable-caption-table'),249 'XY scrolling table has caption table node');250 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),251 'XY scrolling table missing fixed header node');252 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),253 'XY scrolling table missing scrollable-x class');254 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),255 'XY scrolling table missing scrollable-y class');256 },257 "set('scrollable', 'x') after render() should add x scroll DOM": function () {258 var table = this.table = new Y.DataTable({259 columns: ['a'],260 data: [{a:1}],261 width: '100px'262 }).render(),263 boundingBox = table.get('boundingBox');264 table.set('scrollable', 'x');265 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),266 'X scrolling table missing scrollable-x class');267 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),268 'X scrolling table missing X scroll node');269 },270 "set('scrollable', 'y') after render() should add y scroll DOM": function () {271 var table = this.table = new Y.DataTable({272 columns: ['a'],273 data: [{a:1}],274 height: '100px'275 }).render(),276 boundingBox = table.get('boundingBox');277 table.set('scrollable', 'y');278 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),279 'Y scrolling table missing scrollable-y class');280 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),281 'Y scrolling table missing Y scroll container node');282 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),283 'Y scrolling table missing Y scroll fixed header node');284 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),285 'Y scrolling table missing Y scroll node');286 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),287 'Y scrolling table missing virtual scrollbar node');288 },289 "set('scrollable', 'xy') after render() should add y scroll DOM": function () {290 var table = this.table = new Y.DataTable({291 columns: ['a'],292 data: [{a:1}],293 height: '100px',294 width: '100px'295 }).render(),296 boundingBox = table.get('boundingBox');297 table.set('scrollable', 'xy');298 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),299 'XY scrolling table missing scrollable-x class');300 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),301 'XY scrolling table missing scrollable-y class');302 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),303 'XY scrolling table missing X scroll node');304 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),305 'XY scrolling table missing Y scroll container node');306 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),307 'XY scrolling table missing Y scroll fixed header node');308 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),309 'XY scrolling table missing Y scroll node');310 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),311 'XY scrolling table missing virtual scrollbar node');312 },313 "set('scrollable', 'x') from 'xy' should remove y scroll DOM": function () {314 var table = this.table = new Y.DataTable({315 columns: ['a'],316 data: [{a:1}],317 height: '100px',318 width: '100px',319 scrollable: 'xy'320 }).render(),321 boundingBox = table.get('boundingBox');322 table.set('scrollable', 'x');323 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),324 'X scrolling table missing scrollable-x class');325 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),326 'X scrolling table has scrollable-y class');327 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),328 'X scrolling table missing X scroll node');329 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),330 'X scrolling table has Y scroll container node');331 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),332 'X scrolling table has Y scroll fixed header node');333 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),334 'X scrolling table has Y scroll node');335 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),336 'X scrolling table has virtual scrollbar node');337 },338 "set('scrollable', 'y') from 'xy' should remove x scroll DOM": function () {339 var table = this.table = new Y.DataTable({340 columns: ['a'],341 data: [{a:1}],342 height: '100px',343 width: '100px',344 scrollable: 'xy'345 }).render(),346 boundingBox = table.get('boundingBox');347 table.set('scrollable', 'y');348 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),349 'Y scrolling table has scrollable-x class');350 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),351 'Y scrolling table missing scrollable-y class');352 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),353 'Y scrolling table has X scroll node');354 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),355 'Y scrolling table missing Y scroll container node');356 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),357 'Y scrolling table missing Y scroll fixed header node');358 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),359 'Y scrolling table missing Y scroll node');360 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),361 'Y scrolling table missing virtual scrollbar node');362 },363 "set('scrollable', false) from 'x' should remove x scroll DOM": function () {364 var table = this.table = new Y.DataTable({365 columns: ['a'],366 data: [{a:1}],367 width: '100px',368 scrollable: 'x'369 }).render(),370 boundingBox = table.get('boundingBox');371 table.set('scrollable', false);372 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),373 'Non-scrolling table has scrollable-x class');374 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),375 'Non-scrolling table has X scroll node');376 },377 "set('scrollable', false) from 'y' should remove y scroll DOM": function () {378 var table = this.table = new Y.DataTable({379 columns: ['a'],380 data: [{a:1}],381 height: '100px',382 scrollable: 'y'383 }).render(),384 boundingBox = table.get('boundingBox');385 table.set('scrollable', false);386 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),387 'Non-scrolling table has scrollable-y class');388 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),389 'Non-scrolling table has Y scroll container node');390 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),391 'Non-scrolling table has Y scroll fixed header node');392 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),393 'Non-scrolling table has Y scroll node');394 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),395 'Non-scrolling table has virtual scrollbar node');396 },397 "set('scrollable', false) from 'xy' should remove x and y scroll DOM": function () {398 var table = this.table = new Y.DataTable({399 columns: ['a'],400 data: [{a:1}],401 height: '100px',402 width: '100px',403 scrollable: 'xy'404 }).render(),405 boundingBox = table.get('boundingBox');406 table.set('scrollable', false);407 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),408 'Non-scrolling table has scrollable-x class');409 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),410 'Non-scrolling table has scrollable-y class');411 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),412 'Non-scrolling table has X scroll node');413 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),414 'Non-scrolling table has Y scroll container node');415 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),416 'Non-scrolling table has Y scroll fixed header node');417 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),418 'Non-scrolling table has Y scroll node');419 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),420 'Non-scrolling table has virtual scrollbar node');421 },422 "set('scrollable', 'x') from 'y' should add x scroll DOM and remove y scroll DOM": function () {423 var table = this.table = new Y.DataTable({424 columns: ['a'],425 data: [{a:1}],426 height: '100px',427 width: '100px',428 scrollable: 'y'429 }).render(),430 boundingBox = table.get('boundingBox');431 table.set('scrollable', 'x');432 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),433 'X scrolling table missing scrollable-x class');434 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-y'),435 'X scrolling table has scrollable-y class');436 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),437 'X scrolling table missing X scroll node');438 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller-container'),439 'X scrolling table has Y scroll container node');440 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scroll-columns'),441 'X scrolling table has Y scroll fixed header node');442 Y.Assert.isNull(boundingBox.one('.yui3-datatable-y-scroller'),443 'X scrolling table has Y scroll node');444 Y.Assert.isNull(boundingBox.one('.yui3-datatable-scrollbar'),445 'X scrolling table has virtual scrollbar node');446 },447 "set('scrollable', 'y') from 'x' should add y scroll DOM and remove x scroll DOM": function () {448 var table = this.table = new Y.DataTable({449 columns: ['a'],450 data: [{a:1}],451 height: '100px',452 width: '100px',453 scrollable: 'x'454 }).render(),455 boundingBox = table.get('boundingBox');456 table.set('scrollable', 'y');457 Y.Assert.isFalse(boundingBox.hasClass('yui3-datatable-scrollable-x'),458 'Y scrolling table has scrollable-x class');459 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),460 'Y scrolling table missing scrollable-y class');461 Y.Assert.isNull(boundingBox.one('.yui3-datatable-x-scroller'),462 'Y scrolling table has X scroll node');463 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),464 'Y scrolling table missing Y scroll container node');465 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),466 'Y scrolling table missing Y scroll fixed header node');467 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),468 'Y scrolling table missing Y scroll node');469 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),470 'Y scrolling table missing virtual scrollbar node');471 },472 "set('scrollable', 'xy') from 'y' should add x scroll DOM outside y scroll DOM": function () {473 var table = this.table = new Y.DataTable({474 columns: ['a'],475 data: [{a:1}],476 height: '100px',477 width: '100px',478 scrollable: 'y'479 }).render(),480 boundingBox = table.get('boundingBox');481 table.set('scrollable', 'xy');482 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-x'),483 'XY scrolling table missing scrollable-x class');484 Y.Assert.isTrue(boundingBox.hasClass('yui3-datatable-scrollable-y'),485 'XY scrolling table missing scrollable-y class');486 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-x-scroller'),487 'XY scrolling table missing X scroll node');488 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller-container'),489 'XY scrolling table missing Y scroll container node');490 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scroll-columns'),491 'XY scrolling table missing Y scroll fixed header node');492 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-y-scroller'),493 'XY scrolling table missing Y scroll node');494 Y.Assert.isInstanceOf(Y.Node, boundingBox.one('.yui3-datatable-scrollbar'),495 'XY scrolling table missing virtual scrollbar node');496 Y.Assert.isTrue(boundingBox.one('.yui3-datatable-y-scroller-container')497 .get('parentNode').test('.yui3-datatable-x-scroller'),498 "X scroll container didn't wrap Y scroll DOM");499 }500}));501Y.Test.Runner.add(suite);502suite = new Y.Test.Suite("y scrollable");503suite.add(new Y.Test.Case({504 name: "scrollTo",505 setUp: function () {506 var data = [], i;507 for (i = 0; i < 10; ++i) {508 data.push({ a: i, b: i, c: i });509 }510 this.shortData = data.slice();511 for (; i < 100; ++i) {512 data.push({ a: i, b: i, c: i });513 }514 this.longData = data;515 },516 "": function () {517 }518}));519suite.add(new Y.Test.Case({520 name: "y scroll",521 _should: {522 ignore: {523 "virtual scrollbar syncs scrollTop with y scroller": !Y.DOM.getScrollbarWidth(),524 "test scroll lock between virtual scrollbar and y scroller": !Y.DOM.getScrollbarWidth()525 }526 },527 setUp: function () {528 var data = [], i;529 for (i = 0; i < 100; ++i) {530 data.push({ a: i });531 }532 this.table = new Y.DataTable({533 columns: ['a'],534 data: data,535 scrollable: 'y',536 height: '100px'537 }).render();538 },539 tearDown: function () {540 this.table.destroy();541 },542 "test scroll lock between virtual scrollbar and y scroller": function () {543 var test = this,544 table = this.table,545 scrollbar = table._scrollbarNode,546 scroller = table._yScrollNode;547 Y.Assert.isInstanceOf(Y.Node, scrollbar);548 Y.Assert.isInstanceOf(Y.Node, scroller);549 Y.Assert.areSame(scrollbar.get('scrollTop'), scroller.get('scrollTop'));550 var handle = scrollbar.on('scroll', function () {551 handle.detach();552 test.resume(function () {553 Y.Assert.areSame(50, scroller.get('scrollTop'));554 handle = scroller.once('scroll', function () {555 test.resume(function () {556 Y.Assert.areSame(50, scrollbar.get('scrollTop'),557 "scroll lock should have prevented an update of " +558 "the scrollbar.scrollTop for 300ms");559 });560 });561 scroller.set('scrollTop', 80);562 test.wait();563 });564 });565 scrollbar.set('scrollTop', 50);566 test.wait();567 },568 "virtual scrollbar syncs scrollTop with y scroller": function () {569 var test = this,570 table = this.table,571 scrollbar = table._scrollbarNode,572 scroller = table._yScrollNode;573 Y.Assert.isInstanceOf(Y.Node, scrollbar);574 Y.Assert.isInstanceOf(Y.Node, scroller);575 Y.Assert.areSame(scrollbar.get('scrollTop'), scroller.get('scrollTop'));576 var handle = scrollbar.on('scroll', function () {577 handle.detach();578 test.resume(function () {579 Y.Assert.areSame(50, scroller.get('scrollTop'));580 // Allow the scroll lock to lapse581 Y.later(500, {}, function () {582 scroller.set('scrollTop', 80);583 handle = scroller.once('scroll', function () {584 test.resume(function () {585 Y.Assert.areSame(80, scrollbar.get('scrollTop'));586 });587 });588 });589 test.wait();590 });591 });592 scrollbar.set('scrollTop', 50);593 test.wait();594 }595}));596suite.add(new Y.Test.Case({597 name: "x scroll",598 "": function () {599 }600}));601suite.add(new Y.Test.Case({602 name: "xy scroll",603 "": function () {604 }605}));606Y.Test.Runner.add(suite);...
BoundingBox.test.js
Source:BoundingBox.test.js
1/*2 * Copyright 2015-2017 WorldWind Contributors3 * 4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 * 8 * http://www.apache.org/licenses/LICENSE-2.09 * 10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16define([17 'src/geom/BoundingBox',18 'src/geom/Vec3',19 'src/geom/Plane',20 'src/globe/Globe',21 'src/globe/EarthElevationModel',22 'src/geom/Sector'23], function (BoundingBox, Vec3, Plane, Globe, EarthElevationModel, Sector) {24 "use strict";25 describe("BoundingBox Tests", function () {26 it("Should have the basic bounding box properties.", function () {27 var boundingBox = new BoundingBox();28 expect(boundingBox.center).toEqual(new Vec3(0, 0, 0));29 expect(boundingBox.bottomCenter).toEqual(new Vec3(-0.5, 0, 0));30 expect(boundingBox.topCenter).toEqual(new Vec3(0.5, 0, 0));31 expect(boundingBox.r).toEqual(new Vec3(1, 0, 0));32 expect(boundingBox.s).toEqual(new Vec3(0, 1, 0));33 expect(boundingBox.t).toEqual(new Vec3(0, 0, 1));34 expect(boundingBox.radius).toEqual(Math.sqrt(3));35 expect(boundingBox.tmp1).toEqual(new Vec3(0, 0, 0));36 expect(boundingBox.tmp2).toEqual(new Vec3(0, 0, 0));37 expect(boundingBox.tmp3).toEqual(new Vec3(0, 0, 0));38 expect(boundingBox.scratchElevations).toEqual(new Float64Array(9));39 expect(boundingBox.scratchPoints).toEqual(new Float64Array(3 * boundingBox.scratchElevations.length));40 });41 describe("Set to points method", function () {42 it("Sets this bounding box such that it minimally encloses a specified collection of points", function () {43 var boundingBox = new BoundingBox();44 var samplePoints = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);45 expect(boundingBox.setToPoints(samplePoints).radius).toEqual(1.0606601717798212);46 });47 it("Should throw an exception because only two points provided", function () {48 var boundingBox = new BoundingBox();49 expect(function () {50 boundingBox.setToPoints(new Float32Array(2))51 }).toThrow();52 });53 it("Should throw an exception because of the wrong input", function () { //no points provided54 var boundingBox = new BoundingBox();55 expect(function () {56 boundingBox.setToPoints(null)57 }).toThrow();58 });59 // Vec3 variations60 it("Sets this bounding box such that it minimally encloses a specified collection of points", function () {61 var boundingBox = new BoundingBox();62 var vecPoints = [];63 vecPoints.push(new Vec3(1, 0, 0));64 vecPoints.push(new Vec3(0, 1, 0));65 vecPoints.push(new Vec3(0, 0, 1));66 expect(boundingBox.setToVec3Points(vecPoints).radius).toEqual(1.0606601717798212);67 });68 it("Should throw an exception because of the wrong input", function () { //no points provided69 var boundingBox = new BoundingBox();70 expect(function () {71 boundingBox.setToVec3Points(null)72 }).toThrow();73 });74 });75 describe("Get corners method", function () {76 it("Creates a box, verifies correct corners retrieved", function () {77 var points = [];78 points.push(new Vec3(7, 8, 15));79 points.push(new Vec3(-4, 3, 7));80 points.push(new Vec3(-4, -5, 9));81 points.push(new Vec3(6, -12, 18));82 points.push(new Vec3(-7, -8, -15));83 points.push(new Vec3(4, -3, -7));84 points.push(new Vec3(4, 5, -9));85 points.push(new Vec3(-6, 12, -18));86 var boundingBox = new BoundingBox();87 boundingBox.setToVec3Points(points);88 var corners = boundingBox.getCorners();89 var results = [-13.006629, -5.673621, -20.605725, -1.367193, -7.460613, -23.841735, 3.368652, 15.397291, -19.430232,90 -8.270784, 17.184283, -16.194222, -3.368652, -15.397291, 19.430232, 8.270784, -17.184283, 16.194222,91 13.006629, 5.673621, 20.605725, 1.367193, 7.460613, 23.841735];92 var resultCount = 0;93 for (var i = 0; i < corners.length; i++) {94 var vec = corners[i];95 for (var j = 0; j < vec.length; j++) {96 expect(vec[j]).toBeCloseTo(results[resultCount], 3);97 resultCount++;98 }99 }100 });101 });102 describe("Set to sector method", function () {103 it("Sets this bounding box to contain a specified sector with min and max elevation", function () {104 var boundingBox = new BoundingBox();105 var globe = new Globe(new EarthElevationModel());106 var sector = new Sector(-90, 90, -180, 180);107 expect(boundingBox.setToSector(sector, globe, 10, 1000).radius).toBeCloseTo(9006353.499282671, 3);108 });109 it("Should throw an exception because no globe is provided", function () {110 var boundingBox = new BoundingBox();111 expect(function () {112 boundingBox.setToSector(sector, null, 10, 1000)113 }).toThrow();114 });115 it("Should throw an exception because no sector is provided", function () {116 expect(function () {117 boundingBox.setToSector(null, globe, 10, 1000)118 }).toThrow();119 });120 });121 describe("Translates this bounding box by a specified translation vector", function () {122 it("Should return the translated bounding box", function () {123 var boundingBox = new BoundingBox();124 boundingBox.translate(new Vec3(1, 2, 3));125 expect(boundingBox.center).toEqual(new Vec3(1, 2, 3));126 expect(boundingBox.bottomCenter).toEqual(new Vec3(0.5, 2, 3));127 expect(boundingBox.topCenter).toEqual(new Vec3(1.5, 2, 3));128 });129 it("Should throw an error on null vector", function () {130 var boundingBox = new BoundingBox();131 expect(function () {132 boundingBox.translate(null)133 }).toThrow();134 });135 });136 describe("Computes the approximate distance between this bounding box and a specified point", function () {137 it("Should return the correct distance", function () {138 var boundingBox = new BoundingBox();139 var point = new Vec3(3, 2, 5);140 expect(boundingBox.distanceTo(point)).toBeCloseTo(4.432, 3);141 });142 it("Should throw an error on null point", function () {143 var boundingBox = new BoundingBox();144 expect(function () {145 boundingBox.distanceTo(null)146 }).toThrow();147 });148 });149 describe("Computes the effective radius of this bounding box relative to a specified plane", function () {150 it("Should return the correct radius", function () {151 var boundingBox = new BoundingBox();152 var plane = {normal: new Vec3(1, 2, 3)};153 expect(boundingBox.effectiveRadius(plane)).toEqual(3);154 });155 it("Should throw an error on null plane", function () {156 var boundingBox = new BoundingBox();157 expect(function () {158 boundingBox.effectiveRadius(null)159 }).toThrow();160 });161 });162 describe("Indicates whether this bounding box intersects a specified frustum", function () {163 var boundingBox = new BoundingBox();164 var plane = new Plane(-1, 0, -1, -1),165 p1 = new Vec3(1, 2, 3),166 p2 = new Vec3(3, 4, 5);167 it("Indicates where the BoundingBox intersects a point", function () {168 expect(boundingBox.intersectsAt(plane, 1000, p1, p2)).toEqual(0);169 });170 it("Indicates the point intersection with the BoundingBox", function () {171 expect(boundingBox.intersectionPoint(plane)).toEqual(-1);172 });173 it("Should return a false intersection", function () {174 var frustum = {near: plane};175 expect(boundingBox.intersectsFrustum(frustum)).toEqual(false);176 });177 it("Should return a positive intersection", function () {178 var p = new Plane(0.8, -0.5, 0.3, 10000000);179 var frustum = {near: p, far: p, top: p, left: p, right: p, bottom: p};180 expect(boundingBox.intersectsFrustum(frustum)).toEqual(true);181 });182 it("Should throw an error on null frustum", function () {183 expect(function () {184 boundingBox.intersectsFrustum(null)185 }).toThrow();186 });187 });188 });...
Viro3DObjectTest.js
Source:Viro3DObjectTest.js
1/**2 * Sample React Native App3 * https://github.com/facebook/react-native4 */5'use strict';6import React, { Component } from 'react';7import {8 AppRegistry,9 StyleSheet,10 Text,11 View12} from 'react-native';13import {14 ViroAnimatedComponent,15 ViroSceneNavigator,16 ViroScene,17 ViroBox,18 ViroMaterials,19 ViroNode,20 ViroOrbitCamera,21 ViroCamera,22 ViroAmbientLight,23 ViroOmniLight,24 ViroSpotLight,25 ViroDirectionalLight,26 ViroImage,27 ViroVideo,28 Viro360Image,29 Viro360Video,30 ViroFlexView,31 ViroUtils,32 ViroText,33 ViroAnimations,34 ViroQuad,35 ViroSkyBox,36 ViroSphere,37 Viro3DObject,38} from 'react-viro';39var createReactClass = require('create-react-class');40let polarToCartesian = ViroUtils.polarToCartesian;41var ReleaseMenu = require("./ReleaseMenu.js");42var Viro3DObjectTest = createReactClass({43 getInitialState() {44 return {45 runAnimation1:false,46 runAnimation2:false,47 runAnimation3:false,48 setVisibility:true,49 runAnimation4:false,50 };51 },52 render: function() {53 return (54 <ViroScene>55 <ReleaseMenu sceneNavigator={this.props.sceneNavigator}/>56 <ViroOmniLight position={[0, 0, 0]} color="#ffffff" attenuationStartDistance={40} attenuationEndDistance={50}/>57 <ViroImage source={require('./res/poi_dot.png')} position={[-1, 0, 0]} transformBehaviors={["billboard"]}58 onClick={this._showNext} />59 <Viro3DObject ref={(obj)=>{this.destroyer = obj}}60 source={require('./res/destroyer.obj')}61 position={[0, 5, 0]}62 materials={["grey"]}63 rotation={[0, 45, 0]}64 scale={[.1, .1, .1]}65 type="OBJ"66 onHover={this._startAnimation1}67 onLoadEnd={this._getDestroyerBounds}68 animation={{name:"loopRotate",69 run:this.state.runAnimation1 }}70 />71 <Viro3DObject source={{"uri" : "https://s3-us-west-2.amazonaws.com/viro/heart.obj"}}72 scale={[1.8, 1.8, 1.8]}73 position={[-2, 1, 0]}74 type="OBJ"75 materials="heart"/>76 <Viro3DObject ref={(obj)=>{this.ball = obj}}77 source={require('./res/object_basketball.vrx')}78 position={[0, 0, -2.0]}79 rotation={[0, 0, 0]}80 resources={[require('./res/object_basketball_diffuse.png'),81 require('./res/object_basketball_normal.png'),82 require('./res/object_basketball_specular.png')]}83 type="VRX"84 onLoadEnd={this._getBallBounds} />85 <Viro3DObject source={require('./res/xwing.obj')}86 resources={[require("./res/star-wars-x-wing.mtl")]}87 position={[2, -2, -5]}88 materials={["grey"]}89 rotation={[0,0,0]}90 scale={[.3,.3,.3]}91 type="OBJ"92 onClick={this._startAnimation2}93 onLoadStart={this._startAnimation3}94 animation={{name:"loopRotate",95 run:this.state.runAnimation2 }}96 />97 <ViroAnimatedComponent animation="loopRotate" run={this.state.runAnimation4} >98 <Viro3DObject source={require('./res/object_star_anim.vrx')}99 resources={[require("./res/object_star_diffuse.png"),100 require("./res/object_star_specular.png")]}101 position={[-2, -2, -5]}102 type="VRX"103 rotation={[0,0,0]}104 scale={[1,1,1]}105 animation={{name:"02_spin", delay:0, loop:true, run:true}}106 />107 </ViroAnimatedComponent>108 <Viro3DObject ref={(obj)=>{this.earth = obj}}109 source={require('./res/earth_obj.obj')}110 resources={[require('./res/earth_jpg.jpg'),111 require('./res/earth_normal.jpg')]}112 position={[2.0, 0.0, 5.0]}113 scale={[0.01, 0.01, 0.01]}114 materials={["earth"]}115 type="OBJ"116 onLoadEnd={this._getEarthBounds}117 />118 <ViroText position={[.7,0,-2]} text={this._getBallBoundingBoxText()}119 style={styles.elementText} onClick={this._startStopRecording} transformBehaviors={["billboard"]}/>120 <ViroText position={[-.7,0,-2]} text={this._getEarthBoundingBoxText()}121 style={styles.elementText} onClick={this._startStopRecording} transformBehaviors={["billboard"]}/>122 <ViroImage source={require('./res/icon_left_w.png')} position={[-2, -4, -3]} scale={[1, 1, 1]} transformBehaviors={["billboard"]} onClick={this._showPrevious} />123 <ViroText text="Viro3DObject" position={[0, -5, -3]} transformBehaviors={["billboard"]} />124 <ViroImage source={require('./res/icon_right_w.png')} position={[2, -4, -3]} scale={[1, 1, 1]} transformBehaviors={["billboard"]} onClick={this._showNext} />125 </ViroScene>126 );127 },128 _getBallBoundingBoxText() {129 if (this.state.boundingBox == undefined) {130 return "Loading basketball..."131 } else {132 let boundingBox = this.state.boundingBox;133 return "Basketball Bounds: " + boundingBox.minX + ", " + boundingBox.maxX +", " + boundingBox.minY + ", " + boundingBox.maxY + ", " + boundingBox.minZ + ", " + boundingBox.maxZ;134 }135 },136 _getEarthBoundingBoxText() {137 if (this.state.earthBoundingBox == undefined) {138 return "Loading earth..."139 } else {140 let boundingBox = this.state.earthBoundingBox;141 return "Earth bounds: " + boundingBox.minX.toFixed(2) + ", " + boundingBox.maxX.toFixed(2) + ", " + boundingBox.minY.toFixed(2) + ", " + boundingBox.maxY.toFixed(2) + ", " + boundingBox.minZ.toFixed(2) + ", " + boundingBox.maxZ.toFixed(2);142 }143 },144 _getBallBounds() {145 this.ball.getBoundingBoxAsync().then((retMap)=>{146 let boundingBox = retMap.boundingBox;147 console.log("3dobjtest ball boundingBox is: " + boundingBox.minX + ", " + boundingBox.maxX +", " + boundingBox.minY + ", " + boundingBox.maxY + ", " + boundingBox.minZ + ", " + boundingBox.maxZ);148 this.setState({149 boundingBox : retMap.boundingBox150 })151 })152 },153 _getEarthBounds() {154 this.earth.getBoundingBoxAsync().then((retMap)=>{155 let boundingBox = retMap.boundingBox;156 console.log("3dobjtest earth boundingBox is: " + boundingBox.minX + ", " + boundingBox.maxX +", " + boundingBox.minY + ", " + boundingBox.maxY + ", " + boundingBox.minZ + ", " + boundingBox.maxZ);157 this.setState({158 earthBoundingBox : retMap.boundingBox159 })160 })161 },162 _showNext() {163 this.props.sceneNavigator.replace({scene:require('./ViroCameraTest')});164 },165 _showPrevious() {166 this.props.sceneNavigator.pop();167 },168 _onAnimStart() {169 console.log("Viro3DObjectTest: _onAnimStart");170 },171 _onAnimEnd() {172 console.log("Viro3DObjectTest: _onAnimEnd");173 },174 _startAnimation1() {175 this.setState({176 runAnimation1:true,177 });178 },179 _startAnimation2() {180 this.setState({181 runAnimation2:true,182 });183 },184 _startAnimation3() {185 this.setState({186 runAnimation3:true,187 });188 },189 _setVisibility() {190 this.setState({191 setVisibility:!this.state.setVisibility,192 });193 },194 _startAnimation4() {195 this.setState({196 runAnimation4:true,197 });198 },199});200ViroAnimations.registerAnimations({201 loopRotate:{properties:{rotateY:"+=2"}, duration:250},202 scaleSphere:{properties:{scaleX:1.1, scaleY:1.1, scaleZ:1.1}, duration:300},203 spinSphere:[204 ["loopRotate"],205 ["scaleSphere"],206 ],207});208var styles = StyleSheet.create({209 container: {210 flex: 1,211 justifyContent: 'center',212 alignItems: 'center',213 },214 elementText: {215 fontFamily: 'HelveticaNeue-Medium',216 fontSize: 10,217 color: '#ffffff',218 textAlign: 'center',219 },220});221ViroMaterials.createMaterials({222 heart: {223 lightingModel: "Constant",224 diffuseTexture: { "uri" : "https://s3-us-west-2.amazonaws.com/viro/heart_d.jpg" },225 },226 grey: {227 shininess : 2.0,228 lightingModel: "Blinn",229 diffuseTexture: require('./res/grey.jpg'),230 },231 earth: {232 lightingModel: "Blinn",233 diffuseTexture: require('./res/earth_jpg.jpg'),234 normalTexture: require('./res/earth_normal.jpg'),235 }236});...
ScaleBarLayer.js
Source:ScaleBarLayer.js
1import { CompositeLayer, COORDINATE_SYSTEM } from '@deck.gl/core';2import { LineLayer, TextLayer } from '@deck.gl/layers';3import { range } from './utils';4import { makeBoundingBox } from '../views/utils';5import { DEFAULT_FONT_FAMILY } from '../constants';6function getPosition(boundingBox, position, length) {7 const viewLength = boundingBox[2][0] - boundingBox[0][0];8 switch (position) {9 case 'bottom-right': {10 const yCoord =11 boundingBox[2][1] - (boundingBox[2][1] - boundingBox[0][1]) * length;12 const xLeftCoord = boundingBox[2][0] - viewLength * length;13 return [yCoord, xLeftCoord];14 }15 case 'top-right': {16 const yCoord = (boundingBox[2][1] - boundingBox[0][1]) * length;17 const xLeftCoord = boundingBox[2][0] - viewLength * length;18 return [yCoord, xLeftCoord];19 }20 case 'top-left': {21 const yCoord = (boundingBox[2][1] - boundingBox[0][1]) * length;22 const xLeftCoord = viewLength * length;23 return [yCoord, xLeftCoord];24 }25 case 'bottom-left': {26 const yCoord =27 boundingBox[2][1] - (boundingBox[2][1] - boundingBox[0][1]) * length;28 const xLeftCoord = viewLength * length;29 return [yCoord, xLeftCoord];30 }31 default: {32 throw new Error(`Position ${position} not found`);33 }34 }35}36const defaultProps = {37 pickable: { type: 'boolean', value: true, compare: true },38 viewState: {39 type: 'object',40 value: { zoom: 0, target: [0, 0, 0] },41 compare: true42 },43 unit: { type: 'string', value: '', compare: true },44 size: { type: 'number', value: 1, compare: true },45 position: { type: 'string', value: 'bottom-right', compare: true },46 length: { type: 'number', value: 0.085, compare: true }47};48/**49 * @typedef LayerProps50 * @type {Object}51 * @property {String} unit Physical unit size per pixel at full resolution.52 * @property {Number} size Physical size of a pixel.53 * @property {Object} viewState The current viewState for the desired view. We cannot internally use this.context.viewport because it is one frame behind:54 * https://github.com/visgl/deck.gl/issues/450455 * @property {Array=} boundingBox Boudning box of the view in which this should render.56 * @property {string=} id Id from the parent layer.57 * @property {number=} length Value from 0 to 1 representing the portion of the view to be used for the length part of the scale bar.58 */59/**60 * @type {{ new(...props: LayerProps[]) }}61 * @ignore62 */63const ScaleBarLayer = class extends CompositeLayer {64 renderLayers() {65 const { id, unit, size, position, viewState, length } = this.props;66 const boundingBox = makeBoundingBox(viewState);67 const { zoom } = viewState;68 const viewLength = boundingBox[2][0] - boundingBox[0][0];69 const barLength = viewLength * 0.05;70 // This is a good heuristic for stopping the bar tick marks from getting too small71 // and/or the text squishing up into the bar.72 const barHeight = Math.max(73 2 ** (-zoom + 1.5),74 (boundingBox[2][1] - boundingBox[0][1]) * 0.00775 );76 const numUnits = barLength * size;77 const [yCoord, xLeftCoord] = getPosition(boundingBox, position, length);78 const lengthBar = new LineLayer({79 id: `scale-bar-length-${id}`,80 coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,81 data: [82 [83 [xLeftCoord, yCoord],84 [xLeftCoord + barLength, yCoord]85 ]86 ],87 getSourcePosition: d => d[0],88 getTargetPosition: d => d[1],89 getWidth: 2,90 getColor: [220, 220, 220]91 });92 const tickBoundsLeft = new LineLayer({93 id: `scale-bar-height-left-${id}`,94 coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,95 data: [96 [97 [xLeftCoord, yCoord - barHeight],98 [xLeftCoord, yCoord + barHeight]99 ]100 ],101 getSourcePosition: d => d[0],102 getTargetPosition: d => d[1],103 getWidth: 2,104 getColor: [220, 220, 220]105 });106 const tickBoundsRight = new LineLayer({107 id: `scale-bar-height-right-${id}`,108 coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,109 data: [110 [111 [xLeftCoord + barLength, yCoord - barHeight],112 [xLeftCoord + barLength, yCoord + barHeight]113 ]114 ],115 getSourcePosition: d => d[0],116 getTargetPosition: d => d[1],117 getWidth: 2,118 getColor: [220, 220, 220]119 });120 const textLayer = new TextLayer({121 id: `units-label-layer-${id}`,122 coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,123 data: [124 {125 text: numUnits.toPrecision(5) + unit,126 position: [xLeftCoord + barLength * 0.5, yCoord + barHeight * 4]127 }128 ],129 getColor: [220, 220, 220, 255],130 getSize: 12,131 fontFamily: DEFAULT_FONT_FAMILY,132 sizeUnits: 'meters',133 sizeScale: 2 ** -zoom,134 characterSet: [135 ...unit.split(''),136 ...range(10).map(i => String(i)),137 '.',138 'e',139 '+'140 ]141 });142 return [lengthBar, tickBoundsLeft, tickBoundsRight, textLayer];143 }144};145ScaleBarLayer.layerName = 'ScaleBarLayer';146ScaleBarLayer.defaultProps = defaultProps;...
BoundingBox.js
Source:BoundingBox.js
1/* 2 * File: BoundingBox.js3 * Encapsulates an axis aligned box4 */5/*jslint node: true, vars: true, bitwise: true */6/*global vec2 */7/* find out more about jslint: http://www.jslint.com/help.html */8"use strict";9/**10 * Default Constructor11 * Encapsulates an axis aligned box12 * @memberOf BoundingBox13 * @param {vec2} centerPos Center postion of the bounding box14 * @param {Number} w Width of the bounding box15 * @param {Number} h Height of the bounding box16 * @returns {BoundingBox} New instance of BoundingBox17 */18function BoundingBox(centerPos, w, h) {19 this.mLL = vec2.fromValues(0, 0);20 this.setBounds(centerPos, w, h);21}22/**23 * Collision Status values24 * @memberOf BoundingBox25 * @type {enum|eboundCollideStatus}26 */27BoundingBox.eboundCollideStatus = Object.freeze({28 eCollideLeft: 1,29 eCollideRight: 2,30 eCollideTop: 4,31 eCollideBottom: 8,32 eInside : 16,33 eOutside: 034});35/**36 * Set the BoundingBox Location and Size. rotation is ignored.37 * @memberOf BoundingBox38 * @param {vec2} centerPos Center postion of the bounding box39 * @param {Number} w Width of the bounding box40 * @param {Number} h Height of the bounding box41 * @returns {void}42 */43BoundingBox.prototype.setBounds = function (centerPos, w, h) {44 this.mWidth = w;45 this.mHeight = h;46 this.mLL[0] = centerPos[0] - (w / 2);47 this.mLL[1] = centerPos[1] - (h / 2);48};49/**50 * Determines if x,y point is inside BoundingBox51 * @memberOf BoundingBox52 * @param {type} x X location to check53 * @param {type} y Y location to check54 * @returns {Boolean} true if x,y point is inside this BoundingBox55 */56BoundingBox.prototype.containsPoint = function (x, y) {57 return ((x > this.minX()) && (x < this.maxX()) &&58 (y > this.minY()) && (y < this.maxY()));59};60/**61 * Determines if parameter BoundingBox intersects with this BoundingBox62 * @memberOf BoundingBox63 * @param {BoundingBox} otherBound to check intersect status64 * @returns {Boolean} true if paramater intersects this BoundingBox65 */66BoundingBox.prototype.intersectsBound = function (otherBound) {67 return ((this.minX() < otherBound.maxX()) &&68 (this.maxX() > otherBound.minX()) &&69 (this.minY() < otherBound.maxY()) &&70 (this.maxY() > otherBound.minY()));71};72/**73 * Return the collision status of parameter BoundingBox74 * @memberOf BoundingBox75 * @param {BoundingBox} otherBound to check collision status76 * @returns {eboundCollideStatus} collision status77 */78// returns the status of otherBound wrt to this.79BoundingBox.prototype.boundCollideStatus = function (otherBound) {80 var status = BoundingBox.eboundCollideStatus.eOutside;81 if (this.intersectsBound(otherBound)) {82 if (otherBound.minX() < this.minX()) {83 status |= BoundingBox.eboundCollideStatus.eCollideLeft;84 }85 if (otherBound.maxX() > this.maxX()) {86 status |= BoundingBox.eboundCollideStatus.eCollideRight;87 }88 if (otherBound.minY() < this.minY()) {89 status |= BoundingBox.eboundCollideStatus.eCollideBottom;90 }91 if (otherBound.maxY() > this.maxY()) {92 status |= BoundingBox.eboundCollideStatus.eCollideTop;93 }94 // if the bounds intersects and yet none of the sides overlaps95 // otherBound is completely inside thisBound96 if (status === BoundingBox.eboundCollideStatus.eOutside) {97 status = BoundingBox.eboundCollideStatus.eInside;98 }99 }100 return status;101};102/**103 * Return the left position of the BoundingBox104 * @memberOf BoundingBox105 * @returns {Number} left position106 */107BoundingBox.prototype.minX = function () { return this.mLL[0]; };108/**109 * Return the right position of the BoundingBox110 * @memberOf BoundingBox111 * @returns {Number} right position112 */113BoundingBox.prototype.maxX = function () { return this.mLL[0] + this.mWidth; };114/**115 * Return the bottom position of the BoundingBox116 * @memberOf BoundingBox117 * @returns {Number} bottom position118 */119BoundingBox.prototype.minY = function () { return this.mLL[1]; };120/**121 * Return the top position of the BoundingBox122 * @memberOf BoundingBox123 * @returns {Number} top position124 */125BoundingBox.prototype.maxY = function () { return this.mLL[1] + this.mHeight; };...
Character.js
Source:Character.js
1function Character(properties){2 if(typeof properties.mesh === 'undefined') throw "TypeError: Invalid character: mesh is undefined";3 this.mesh = properties.mesh;4 this.animationMixer = new THREE.AnimationMixer(properties.mesh);5 this.raycaster = new THREE.Raycaster();6 var animations = properties.mesh.geometry.animations;7 if(typeof animations !== 'undefined'){8 for(var i = 0; i < animations.length; i++){9 this.animationMixer.play(new THREE.AnimationAction(animations[i]));10 }11 }12 this.intersectsObjects = function(objects){13 var rays = [14 new THREE.Vector3(0, 0, 1),15 new THREE.Vector3(0, 0, -1),16 new THREE.Vector3(0, 1, 0),17 new THREE.Vector3(0, -1, 0),18 new THREE.Vector3(0, 1, 1),19 new THREE.Vector3(0, -1, 1),20 new THREE.Vector3(0, 1, -1),21 new THREE.Vector3(0, -1, -1)22 ];23 for(var h = 0; h < objects.length; h++){24 objects[h].geometry.computeBoundingBox();25 var boundingBox = objects[h].geometry.boundingBox;26 var characterBoundingBox = this.mesh.geometry.boundingBox;27 if(Math.abs(this.mesh.position.z - objects[h].position.z) < 10){28 console.log('checkig');29 var boundaries = [30 boundingBox.max.z,31 boundingBox.max.z,32 boundingBox.max.y,33 boundingBox.max.y,34 Math.sqrt(Math.pow(boundingBox.max.y, 2) + Math.pow(boundingBox.max.z, 2)),35 Math.sqrt(Math.pow(boundingBox.max.y, 2) + Math.pow(boundingBox.max.z, 2)),36 Math.sqrt(Math.pow(boundingBox.max.y, 2) + Math.pow(boundingBox.max.z, 2)),37 Math.sqrt(Math.pow(boundingBox.max.y, 2) + Math.pow(boundingBox.max.z, 2))38 ];39 for(var i = 0; i < rays.length; i++){40 this.raycaster.set(objects[h].position, rays[i]);41 var intersections = this.raycaster.intersectObject(this.mesh);42 if(intersections.length > 0 && intersections[0].distance <= boundaries[i]){43 return true;44 }45 }46 }47 }48 return false;49 }50 this.position = this.mesh.position;51 this.height = function(){52 this.mesh.geometry.computeBoundingBox();53 return Math.abs(this.mesh.geometry.boundingBox.max.y - this.mesh.geometry.boundingBox.min.y);54 };...
Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3 const browser = await puppeteer.launch();4 const page = await browser.newPage();5 await page.setViewport({width: 1366, height: 768});6 await page.screenshot({path: 'example.png'});7 const element = await page.$('div#hplogo');8 const box = await element.boundingBox();9 console.log(box);10 await browser.close();11})();12{ x: 0, y: 0, width: 300, height: 92 }13const puppeteer = require('puppeteer');14(async () => {15 const browser = await puppeteer.launch();16 const page = await browser.newPage();17 await page.setViewport({width: 1366, height: 768});18 await page.screenshot({path: 'example.png'});19 const element = await page.$('div#hplogo');20 const box = await element.boundingBox();21 console.log(box);22 await browser.close();23})();24{ x: 0, y: 0, width: 300, height: 92 }25const puppeteer = require('puppeteer');26(async () => {27 const browser = await puppeteer.launch();28 const page = await browser.newPage();29 await page.setViewport({width: 1366, height: 768});30 await page.screenshot({path: 'example.png'});31 const element = await page.$('div#hplogo');32 const box = await element.boundingBox();33 console.log(box);34 await browser.close();35})();36{ x: 0, y: 0, width: 300, height: 92 }37const puppeteer = require('puppeteer');38(async () => {39 const browser = await puppeteer.launch();40 const page = await browser.newPage();41 await page.setViewport({width: 1366, height: 768});
Using AI Code Generation
1const puppeteer = require('puppeteer');2const fs = require('fs');3(async () => {4 const browser = await puppeteer.launch();5 const page = await browser.newPage();6 const element = await page.$('input[name="q"]');7 const box = await element.boundingBox();8 await browser.close();9})();
Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3 const browser = await puppeteer.launch();4 const page = await browser.newPage();5 const dimensions = await page.evaluate(() => {6 return {7 };8 });9 console.log('Dimensions:', dimensions);10 await browser.close();11})();12Dimensions: { width: 800, height: 600, deviceScaleFactor: 1 }132. Using boundingBox() method14const puppeteer = require('puppeteer');15(async () => {16 const browser = await puppeteer.launch();17 const page = await browser.newPage();18 const dimensions = await page.evaluate(() => {19 const element = document.querySelector('div');20 const { x, y, width, height } = element.getBoundingClientRect();21 return { x, y, width, height };22 });23 console.log('Dimensions:', dimensions);24 await browser.close();25})();26Dimensions: { x: 0, y: 0, width: 0, height: 0 }273. Using boundingBox() method with Viewport28const puppeteer = require('puppeteer');29(async () => {30 const browser = await puppeteer.launch();31 const page = await browser.newPage();32 await page.setViewport({ width: 500, height: 240 })33 const dimensions = await page.evaluate(() => {34 const element = document.querySelector('div');35 const { x, y, width, height } = element.getBoundingClientRect();36 return { x, y, width, height };37 });38 console.log('Dimensions:', dimensions);39 await browser.close();40})();41Dimensions: { x: 0, y: 0, width: 500, height: 240 }424. Using boundingBox() method with Viewport and DeviceScaleFactor43const puppeteer = require('puppeteer');44(async () => {
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!