Skip to content

Commit c818317

Browse files
Merge pull request eduardolundgren#76 from mairatma/video
Color video demo
2 parents ee83a96 + e977980 commit c818317

2 files changed

Lines changed: 30 additions & 17 deletions

File tree

examples/assets/minions.mp4

3.71 MB
Binary file not shown.

examples/color_video.html

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
<script src="assets/stats.min.js"></script>
1010

1111
<style>
12-
#rectangle {
13-
height: 80px;
14-
left: -1000px;
12+
.demo-container {
13+
background-color: black;
14+
}
15+
16+
video, canvas {
1517
position: absolute;
16-
top: -1000px;
17-
width: 120px;
1818
}
1919
</style>
2020
</head>
@@ -27,33 +27,46 @@
2727
<div class="demo-container">
2828
<div id="rectangle"></div>
2929
<video id="video" width="800" height="530" preload autoplay loop muted controls>
30-
<source src="assets/color.mp4" type="video/mp4">
31-
<source src="assets/color.webm" type="video/webm">
30+
<source src="assets/minions.mp4" type="video/mp4">
3231
</video>
32+
<canvas id="canvas" width="800" height="500"></canvas>
3333
</div>
3434
</div>
3535

3636
<script>
3737
window.onload = function() {
3838
var rectangle = document.getElementById('rectangle');
3939
var video = document.getElementById('video');
40+
var canvas = document.getElementById('canvas');
41+
var context = canvas.getContext('2d');
42+
43+
tracking.ColorTracker.registerColor('purple', function(r, g, b) {
44+
var threshold = 50,
45+
dx = r - 120,
46+
dy = g - 60,
47+
dz = b - 210;
4048

41-
var tracker = new tracking.ColorTracker();
49+
if ((b - g) >= 100 && (r - g) >= 60) {
50+
return true;
51+
}
52+
return dx * dx + dy * dy + dz * dz < 3500;
53+
});
54+
55+
var tracker = new tracking.ColorTracker(['yellow', 'purple']);
4256
tracker.setMinDimension(5);
4357

4458
tracking.track('#video', tracker);
4559

4660
tracker.on('track', function(event) {
47-
if (event.data.length === 0) {
48-
rectangle.style.top = '-1000px';
49-
return;
50-
}
61+
context.clearRect(0, 0, canvas.width, canvas.height);
62+
5163
event.data.forEach(function(rect) {
52-
rectangle.style.border = '2px solid ' + rect.color;
53-
rectangle.style.width = rect.width + 'px';
54-
rectangle.style.height = rect.height + 'px';
55-
rectangle.style.left = (video.offsetLeft + rect.x) + 'px';
56-
rectangle.style.top = (video.offsetTop + rect.y) + 'px';
64+
if (rect.color === 'custom') {
65+
rect.color = tracker.customColor;
66+
}
67+
68+
context.strokeStyle = rect.color;
69+
context.strokeRect(rect.x, rect.y, rect.width, rect.height);
5770
});
5871
});
5972
};

0 commit comments

Comments
 (0)