Best JavaScript code snippet using playwright-internal
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 { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const boundingBox = await page.evaluateHandle(() => {7 const element = document.querySelector('text=Get started');8 return element.boundingBox();9 });10 console.log(await boundingBox.jsonValue());11 await browser.close();12})();13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 const boundingBox = await page.evaluateHandle(() => {19 const element = document.querySelector('text=Get started');20 return element.boundingBox();21 });22 console.log(await boundingBox.jsonValue());23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 const boundingBox = await page.evaluateHandle(() => {31 const element = document.querySelector('text=Get started');32 return element.boundingBox();33 });34 console.log(await boundingBox.jsonValue());35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch();40 const context = await browser.newContext();41 const page = await context.newPage();42 const boundingBox = await page.evaluateHandle(() => {43 const element = document.querySelector('text=Get started');44 return element.boundingBox();45 });46 console.log(await boundingBox.jsonValue());47 await browser.close();48})();49const { chromium } = require('playwright');50(async () => {51 const browser = await chromium.launch();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const boundingBox = await page.evaluateHandle(() => {7 const div = document.createElement('div');8 div.textContent = 'Hello world';9 document.body.appendChild(div);10 return div;11 }).then(handle => handle.boundingBox());12 console.log(boundingBox);13 await browser.close();14})();15const {chromium} = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const context = await browser.newContext();19 const page = await context.newPage();20 const boundingBox = await page.evaluateHandle(() => {21 const div = document.createElement('div');22 div.textContent = 'Hello world';23 document.body.appendChild(div);24 return div;25 }).then(handle => handle.boundingBox());26 console.log(boundingBox);27 await browser.close();28})();29const {chromium} = require('playwright');30(async () => {31 const browser = await chromium.launch();32 const context = await browser.newContext();33 const page = await context.newPage();34 const boundingBox = await page.evaluateHandle(() => {35 const div = document.createElement('div');36 div.textContent = 'Hello world';37 document.body.appendChild(div);38 return div;39 }).then(handle => handle.boundingBox());40 console.log(boundingBox);41 await browser.close();42})();43const {chromium} = require('playwright');44(async () => {45 const browser = await chromium.launch();46 const context = await browser.newContext();47 const page = await context.newPage();48 const boundingBox = await page.evaluateHandle(() => {49 const div = document.createElement('div');50 div.textContent = 'Hello world';51 document.body.appendChild(div);52 return div;53 }).then(handle => handle.boundingBox());54 console.log(boundingBox);
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const elementHandle = await page.$('input[type="text"]');7 const boundingBox = await elementHandle.boundingBox();8 console.log(boundingBox);9 await browser.close();10})();
Using AI Code Generation
1const { chromium } = require('playwright');2const fs = require('fs');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await page.$('input[name="q"]');8 const boundingBox = await element.boundingBox();9 const screenshot = await page.screenshot({ path: 'google.png' });10 fs.writeFileSync('boundingBox.json', JSON.stringify(boundingBox));11 await browser.close();12})();13const { chromium } = require('playwright');14const fs = require('fs');15(async () => {16 const browser = await chromium.launch();17 const context = await browser.newContext();18 const page = await context.newPage();19 const element = await page.$('input[name="q"]');20 const boundingBox = await element.boundingBox();21 const screenshot = await page.screenshot({ path: 'google.png' });22 fs.writeFileSync('boundingBox2.json', JSON.stringify(boundingBox));23 await browser.close();24})();25const { chromium } = require('playwright');26const fs = require('fs');27(async () => {28 const browser = await chromium.launch();29 const context = await browser.newContext();30 const page = await context.newPage();31 const element = await page.$('input[name="q"]');32 const boundingBox = await element.boundingBox();33 const screenshot = await page.screenshot({ path: 'google.png' });34 fs.writeFileSync('boundingBox3.json', JSON.stringify(boundingBox));35 await browser.close();36})();37const { chromium } = require('playwright');38const fs = require('fs');39(async () => {40 const browser = await chromium.launch();41 const context = await browser.newContext();42 const page = await context.newPage();43 const element = await page.$('input[name="q"]');44 const boundingBox = await element.boundingBox();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch({headless: false});4 const context = await browser.newContext();5 const page = await context.newPage();6 const box = await page.evaluateHandle(() => {7 return document.querySelector('text=Get started').boundingBox();8 });9 const {x, y, width, height} = await box.jsonValue();10 await page.screenshot({path: 'bounding-box.png', clip: {x, y, width, height}});11 await browser.close();12})();13const {chromium} = require('playwright');14(async () => {15 const browser = await chromium.launch({headless: false});16 const context = await browser.newContext();17 const page = await context.newPage();18 const box = await page.$eval('text=Get started', element => {19 return element.boundingBox();20 });21 const {x, y, width, height} = box;22 await page.screenshot({path: 'bounding-box.png', clip: {x, y, width, height}});23 await browser.close();24})();
Using AI Code Generation
1const { boundingBox } = require('playwright/lib/protocol/dom');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.screenshot({ path: `example.png` });8 const element = await page.$('input[name="q"]');9 const box = await boundingBox(element);10 console.log(box);11 await browser.close();12})();
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!