|
5 | 5 | <title>tracking.js - bounding box with camera</title> |
6 | 6 |
|
7 | 7 | <meta charset="utf-8"> |
| 8 | + <link rel="stylesheet" href="assets/demo.css"> |
8 | 9 |
|
9 | | - <script src="../build/tracking.js"></script> |
| 10 | + <script src="../build/tracking-min.js"></script> |
10 | 11 | <script src="assets/stats.min.js"></script> |
11 | 12 |
|
12 | 13 | <style> |
|
16 | 17 | background: white; |
17 | 18 | border: 1px dashed; |
18 | 19 | opacity: .5; |
| 20 | + z-index: 1; |
19 | 21 | } |
20 | 22 | #video { |
21 | 23 | position: absolute; |
|
32 | 34 | </style> |
33 | 35 | </head> |
34 | 36 | <body> |
35 | | - Click and drag to select the area to be tracked. |
36 | | - <br> |
| 37 | + |
| 38 | + <div class="demo-title"> |
| 39 | + <p><a href="http://trackingjs.com">tracking.js</a> - Click and drag to select the area to be tracked</p> |
| 40 | + </div> |
| 41 | + |
37 | 42 | <div id="boundingBox"></div> |
38 | | - <video id="video" width="640" height="480" preload autoplay loop muted controls></video> |
39 | | - <canvas id="canvas" width="640" height="480"></canvas> |
| 43 | + |
| 44 | + <div class="demo-frame"> |
| 45 | + <div class="demo-container"> |
| 46 | + <video id="video" width="393" height="295" preload autoplay loop muted controls></video> |
| 47 | + <canvas id="canvas" width="800" height="530"></canvas> |
| 48 | + </div> |
| 49 | +</div> |
40 | 50 |
|
41 | 51 | <script> |
42 | 52 | (function() { |
|
68 | 78 |
|
69 | 79 | // Track =================================================================== |
70 | 80 | var boundingBox = document.getElementById('boundingBox'); |
| 81 | + var boxLeft = 403; |
71 | 82 | var video = document.getElementById('video'); |
72 | 83 | var canvas = document.getElementById('canvas'); |
| 84 | + var canvasRect = canvas.getBoundingClientRect(); |
73 | 85 | var context = canvas.getContext('2d'); |
74 | 86 | var templateImageData; |
75 | 87 | var capturing = false; |
| 88 | + var videoHeight = 295; |
| 89 | + var videoWidth = 393; |
76 | 90 |
|
77 | 91 | var tracker = new BoundingBoxTracker(); |
78 | 92 |
|
|
87 | 101 | return b.confidence - a.confidence; |
88 | 102 | }); |
89 | 103 | // Re-draws template on canvas. |
90 | | - context.putImageData(templateImageData, 640, 0); |
| 104 | + context.putImageData(templateImageData, boxLeft, 0); |
91 | 105 |
|
92 | 106 | // Plots lines connecting matches. |
93 | 107 | for (var i = 0; i < Math.min(10, event.data.length); i++) { |
|
96 | 110 | context.beginPath(); |
97 | 111 | context.strokeStyle = 'magenta'; |
98 | 112 | context.moveTo(frame[0], frame[1]); |
99 | | - context.lineTo(640 + template[0], template[1]); |
| 113 | + context.lineTo(boxLeft + template[0], template[1]); |
100 | 114 | context.stroke(); |
101 | 115 | } |
102 | 116 | }); |
|
111 | 125 | context.clearRect(0, 0, canvas.width, canvas.height); |
112 | 126 | if (video.readyState === video.HAVE_ENOUGH_DATA) { |
113 | 127 | try { |
114 | | - context.drawImage(video, 0, 0, 600, 480); |
| 128 | + context.drawImage(video, 0, 0, videoWidth, videoHeight); |
115 | 129 | } catch (err) {} |
116 | 130 | } |
117 | 131 | requestFrame(); |
|
148 | 162 | capturing = false; |
149 | 163 | }); |
150 | 164 | function setTackerTemplate(left, top, width, height) { |
151 | | - templateImageData = context.getImageData(left - canvas.offsetLeft, top - canvas.offsetTop, width, height); |
152 | | - canvas.width = 640 + width; |
153 | | - context.putImageData(templateImageData, 640, 0); |
| 165 | + templateImageData = context.getImageData(left - canvasRect.left, top - canvasRect.top, width, height); |
| 166 | + canvas.width = boxLeft + width; |
| 167 | + context.putImageData(templateImageData, boxLeft, 0); |
154 | 168 | trackerTask.stop(); |
155 | 169 | tracker.setTemplate(templateImageData.data, width, height); |
156 | 170 | trackerTask.run(); |
|
0 commit comments