color_video.html 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>tracking.js - color with video</title>
  6. <link rel="stylesheet" href="assets/demo.css">
  7. <script src="../build/tracking-min.js"></script>
  8. <script src="../node_modules/dat.gui/build/dat.gui.min.js"></script>
  9. <script src="assets/stats.min.js"></script>
  10. <script src="assets/color_camera_gui.js"></script>
  11. <style>
  12. .demo-container {
  13. background-color: black;
  14. }
  15. video, canvas {
  16. position: absolute;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="demo-title">
  22. <p><a href="http://trackingjs.com" target="_parent">tracking.js</a> - detect certain colors in a video</p>
  23. </div>
  24. <div class="demo-frame">
  25. <div class="demo-container">
  26. <div id="rectangle"></div>
  27. <video id="video" width="800" height="530" preload autoplay loop muted controls>
  28. <source src="assets/minions.mp4" type="video/mp4">
  29. <source src="assets/minions.ogv" type="video/ogg">
  30. </video>
  31. <canvas id="canvas" width="800" height="500"></canvas>
  32. </div>
  33. </div>
  34. <script>
  35. window.onload = function() {
  36. var canvas = document.getElementById('canvas');
  37. var context = canvas.getContext('2d');
  38. tracking.ColorTracker.registerColor('purple', function(r, g, b) {
  39. var dx = r - 120;
  40. var dy = g - 60;
  41. var dz = b - 210;
  42. if ((b - g) >= 100 && (r - g) >= 60) {
  43. return true;
  44. }
  45. return dx * dx + dy * dy + dz * dz < 3500;
  46. });
  47. var tracker = new tracking.ColorTracker(['yellow', 'purple']);
  48. tracker.setMinDimension(5);
  49. tracking.track('#video', tracker);
  50. tracker.on('track', function(event) {
  51. context.clearRect(0, 0, canvas.width, canvas.height);
  52. event.data.forEach(function(rect) {
  53. if (rect.color === 'custom') {
  54. rect.color = tracker.customColor;
  55. }
  56. context.strokeStyle = rect.color;
  57. context.strokeRect(rect.x, rect.y, rect.width, rect.height);
  58. context.font = '11px Helvetica';
  59. context.fillStyle = "#fff";
  60. context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11);
  61. context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22);
  62. });
  63. });
  64. initGUIControllers(tracker);
  65. };
  66. </script>
  67. </body>
  68. </html>