tracking.js示例 - 浏览器中检测摄像头中的人脸自动拍照并提示保存到本地

今天药忘吃喽~ 2023-10-02 11:32 34阅读 0赞
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>demo</title>
  6. <script src="./build/tracking-min.js"></script>
  7. <script src="./build/data/face-min.js"></script>
  8. <style>
  9. video,
  10. canvas {
  11. position: absolute;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div class="demo-container">
  17. <video id="video" width="320" height="240" preload autoplay loop muted></video>
  18. <canvas id="canvas" width="320" height="240"></canvas>
  19. </div>
  20. <script>
  21. window.onload = function () {
  22. // 视频显示
  23. var video = document.getElementById('video');
  24. // 绘图
  25. var canvas = document.getElementById('canvas');
  26. var context = canvas.getContext('2d');
  27. var time = 10000;
  28. var tracker = new tracking.ObjectTracker('face');
  29. // 设置识别的放大比例
  30. tracker.setInitialScale(4);
  31. // 设置步长
  32. tracker.setStepSize(2);
  33. // 边缘密度
  34. tracker.setEdgesDensity(0.1);
  35. // 启动摄像头,并且识别视频内容
  36. var trackerTask = tracking.track('#video', tracker, {
  37. camera: true
  38. });
  39. var flag = true;
  40. tracker.on('track', function (event) {
  41. if (event.data.length === 0) {
  42. context.clearRect(0, 0, canvas.width, canvas.height);
  43. } else {
  44. context.clearRect(0, 0, canvas.width, canvas.height);
  45. event.data.forEach(function (rect) {
  46. context.strokeStyle = '#ff0000';
  47. context.strokeRect(rect.x, rect.y, rect.width, rect.height);
  48. context.fillStyle = "#ff0000";
  49. //console.log(rect.x, rect.width, rect.y, rect.height);
  50. });
  51. if (flag) {
  52. console.log("拍照");
  53. context.drawImage(video, 0, 0, 320, 240);
  54. saveAsLocalImage();
  55. context.clearRect(0, 0, canvas.width, canvas.height);
  56. flag = false;
  57. setTimeout(function () {
  58. flag = true;
  59. }, time);
  60. } else {
  61. //console.log("冷却中");
  62. }
  63. }
  64. });
  65. };
  66. function saveAsLocalImage() {
  67. var myCanvas = document.getElementById("canvas");
  68. // here is the most important part because if you dont replace you will get a DOM 18 exception.
  69. // var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream;Content-Disposition: attachment;filename=foobar.png");
  70. var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
  71. // window.location.href = image; // it will save locally
  72. // create temporary link
  73. var tmpLink = document.createElement('a');
  74. tmpLink.download = 'image.png'; // set the name of the download file
  75. tmpLink.href = image;
  76. // temporarily add link to body and initiate the download
  77. document.body.appendChild(tmpLink);
  78. tmpLink.click();
  79. document.body.removeChild(tmpLink);
  80. }
  81. </script>
  82. </body>
  83. </html>

发表评论

表情:
评论列表 (有 0 条评论,34人围观)

还没有评论,来说两句吧...

相关阅读