fast_camera.html 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>tracking.js - feature detector with camera</title>
  5. <meta charset="utf-8">
  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. <style>
  11. #video {
  12. position: absolute;
  13. top: -1000px;
  14. }
  15. #canvas {
  16. left: 50%;
  17. top: 50%;
  18. margin-left: -200px;
  19. margin-top: -150px;
  20. position: absolute;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div class="demo-title">
  26. <p><a href="http://trackingjs.com" target="_parent">tracking.js</a> - display detected features</p>
  27. </div>
  28. <div class="demo-frame">
  29. <div class="demo-container">
  30. <video id="video" width="400" height="300" preload autoplay loop muted></video>
  31. <canvas id="canvas" width="400" height="300"></canvas>
  32. </div>
  33. </div>
  34. <script>
  35. var canvas = document.getElementById('canvas');
  36. var context = canvas.getContext('2d');
  37. var FastTracker = function() {
  38. FastTracker.base(this, 'constructor');
  39. };
  40. tracking.inherits(FastTracker, tracking.Tracker);
  41. tracking.Fast.THRESHOLD = 2;
  42. FastTracker.prototype.threshold = tracking.Fast.THRESHOLD;
  43. FastTracker.prototype.track = function(pixels, width, height) {
  44. stats.begin();
  45. var gray = tracking.Image.grayscale(pixels, width, height);
  46. var corners = tracking.Fast.findCorners(gray, width, height);
  47. stats.end();
  48. this.emit('track', {
  49. data: corners
  50. });
  51. };
  52. var tracker = new FastTracker();
  53. tracker.on('track', function(event) {
  54. context.clearRect(0, 0, canvas.width, canvas.height);
  55. var corners = event.data;
  56. for (var i = 0; i < corners.length; i += 2) {
  57. context.fillStyle = '#f00';
  58. context.fillRect(corners[i], corners[i + 1], 2, 2);
  59. }
  60. });
  61. tracking.track('#video', tracker, { camera: true });
  62. // GUI Controllers
  63. var gui = new dat.GUI();
  64. gui.add(tracker, 'threshold', 1, 100).onChange(function(value) {
  65. tracking.Fast.THRESHOLD = value;
  66. });
  67. </script>
  68. </body>
  69. </html>