{"_id":"clmtrackr","_rev":"9-ef91f835057a75ecbe065b7509d58516","name":"clmtrackr","description":"Javascript library for precise tracking of facial features via Constrained Local Models","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"clmtrackr","version":"1.0.0","repository":{"type":"git","url":"git+https://github.com/michelalbers/clmtrackr.git"},"devDependencies":{"grunt":"~0.4.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-uglify":"~0.2.7"},"gitHead":"64724a984676cab26a4aa0ad971fb9dbe4e25a87","description":"clmtrackr ======","bugs":{"url":"https://github.com/michelalbers/clmtrackr/issues"},"homepage":"https://github.com/michelalbers/clmtrackr#readme","_id":"clmtrackr@1.0.0","scripts":{},"_shasum":"10a382741e58382d1d902a542e20dcc92b43742a","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.7.0","_npmUser":{"name":"interwebs","email":"technik@interwebs-ug.de"},"dist":{"shasum":"10a382741e58382d1d902a542e20dcc92b43742a","tarball":"https://registry.npmjs.org/clmtrackr/-/clmtrackr-1.0.0.tgz","integrity":"sha512-kmO4eRyUP4o/CFwrBZd4OY17W88kXHAjDWq2ITkbMKT1aKuYQeKAXdTODr1unB+ZwuyvuMT6TIv8kCq3kI2iOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDB32i2JoFYm7Jo5kFLoTLEKeIB7v81Co2K9zo4uOU1QIhANUj28ehp2t45c5B/4O1DAvlyX3q4hFQkQAFnN0eD5Jf"}]},"maintainers":[{"name":"interwebs","email":"technik@interwebs-ug.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/clmtrackr-1.0.0.tgz_1459680644354_0.4996788571588695"}},"1.0.1":{"name":"clmtrackr","version":"1.0.1","repository":{"type":"git","url":"git+https://github.com/michelalbers/clmtrackr.git"},"devDependencies":{"grunt":"~0.4.2","grunt-contrib-concat":"~0.3.0","grunt-contrib-uglify":"~0.2.7"},"gitHead":"667fc1b19782860e099b594cc65f7fb4cb503f59","description":"clmtrackr ======","bugs":{"url":"https://github.com/michelalbers/clmtrackr/issues"},"homepage":"https://github.com/michelalbers/clmtrackr#readme","_id":"clmtrackr@1.0.1","scripts":{},"_shasum":"709a8af7cac29533cc6509b58d2f1c9341fa62cc","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.7.0","_npmUser":{"name":"interwebs","email":"technik@interwebs-ug.de"},"dist":{"shasum":"709a8af7cac29533cc6509b58d2f1c9341fa62cc","tarball":"https://registry.npmjs.org/clmtrackr/-/clmtrackr-1.0.1.tgz","integrity":"sha512-khSPn1YYlvJANAYkD7OmJYTY4K8zU88eH6uYOwsgmLj8MxvCjGb3CnwPRBEAqPXhrU1BiGpRIBC3YVUBBTV3pg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApqYSd6rjQzRE+J6WwWWk3T5NbIYlic5KNtCPFzIiHfAiAZCjuwPR5/EPh5/A9zzrgjlzBjLREH0RjHEnAQY3XXMg=="}]},"maintainers":[{"name":"interwebs","email":"technik@interwebs-ug.de"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/clmtrackr-1.0.1.tgz_1460314183899_0.3030200651846826"}},"1.1.0":{"name":"clmtrackr","version":"1.1.0","description":"Javascript library for precise tracking of facial features via Constrained Local Models","main":"build/clmtrackr.js","module":"build/clmtrackr.module.js","repository":{"type":"git","url":"git+https://github.com/auduno/clmtrackr.git"},"scripts":{"build":"rollup -c","build-uglify":"rollup -c && uglifyjs build/clmtrackr.js -c > build/clmtrackr.min.js","clean":"rm -rf build"},"author":{"name":"Audun Mathias Øygard","email":"amoygard@gmail.com","url":"https://auduno.com/"},"keywords":["computer-vision"],"license":"MIT","devDependencies":{"rollup":"^0.41.6","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-commonjs":"^8.0.2","uglify-es":"^3.0.17"},"dependencies":{"jsfeat":"git+https://github.com/inspirit/jsfeat.git","numeric":"^1.2.6","mosse":"^0.1.1","raf":"^3.3.2","promise-polyfill":"^6.0.2"},"gitHead":"d40e0a83f88680a336e5b718a32f5d2de9baa9c8","bugs":{"url":"https://github.com/auduno/clmtrackr/issues"},"homepage":"https://github.com/auduno/clmtrackr#readme","_id":"clmtrackr@1.1.0","_shasum":"a94070c85bbc5692e576ceb3b8c2b640e92328bd","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"auduno","email":"amoygard@gmail.com"},"dist":{"shasum":"a94070c85bbc5692e576ceb3b8c2b640e92328bd","tarball":"https://registry.npmjs.org/clmtrackr/-/clmtrackr-1.1.0.tgz","integrity":"sha512-JXOyjoQyB5Gb3mmB8v0Letb0lciWQ5gYffGz/TRqfGKNTCFcIfsaqjDSlB+8dnAUtAs4npIgTZI1h52y5+m18g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVFXC7QdfeTyiCSp2lm7zL9yv2dEQjM+JX9jzFbP1L+wIgEWH0r9c/PCgF+EwA6Eo8+uapDdRLzldMBux3vH5MnxE="}]},"maintainers":[{"name":"auduno","email":"amoygard@gmail.com"},{"name":"interwebs","email":"technik@interwebs-ug.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clmtrackr-1.1.0.tgz_1499293310307_0.660541590070352"}},"1.1.1":{"name":"clmtrackr","version":"1.1.1","description":"Javascript library for precise tracking of facial features via Constrained Local Models","main":"build/clmtrackr.js","module":"build/clmtrackr.module.js","repository":{"type":"git","url":"git+https://github.com/auduno/clmtrackr.git"},"scripts":{"build":"rollup -c","build-uglify":"rollup -c && uglifyjs build/clmtrackr.js -c > build/clmtrackr.min.js","clean":"rm -rf build"},"author":{"name":"Audun Mathias Øygard","email":"amoygard@gmail.com","url":"https://auduno.com/"},"keywords":["computer-vision"],"license":"MIT","devDependencies":{"rollup":"^0.41.6","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-commonjs":"^8.0.2","uglify-es":"^3.0.17"},"dependencies":{"jsfeat":"git+https://github.com/inspirit/jsfeat.git","numeric":"^1.2.6","mosse":"^0.1.1","raf":"^3.3.2","promise-polyfill":"^6.0.2"},"gitHead":"e1f776cb9529f43926d4fc02630c499c15d69ed3","bugs":{"url":"https://github.com/auduno/clmtrackr/issues"},"homepage":"https://github.com/auduno/clmtrackr#readme","_id":"clmtrackr@1.1.1","_shasum":"687cbbb3ac71c605eef1bfd838e469548ef97141","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"auduno","email":"amoygard@gmail.com"},"dist":{"shasum":"687cbbb3ac71c605eef1bfd838e469548ef97141","tarball":"https://registry.npmjs.org/clmtrackr/-/clmtrackr-1.1.1.tgz","integrity":"sha512-djh+hKBgpvzBu+vKQTLgc/pg3SrXOKnoSVXy1xL40H169nBIfrBNcC2g16EYqASda3lE6Nos5gqzf5FVbGESRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDylWHU6B+6wt4ot6QG1bcVloqrxTwygrnHGpL9+PNrXAIgGH0IBoBOpn56g4662tpQnL8HQ9hH7VqwvXYjEHn+Hk0="}]},"maintainers":[{"name":"auduno","email":"amoygard@gmail.com"},{"name":"interwebs","email":"technik@interwebs-ug.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clmtrackr-1.1.1.tgz_1503860951090_0.8316667340695858"}},"1.1.2":{"name":"clmtrackr","version":"1.1.2","description":"Javascript library for precise tracking of facial features via Constrained Local Models","main":"build/clmtrackr.js","module":"build/clmtrackr.module.js","repository":{"type":"git","url":"git+https://github.com/auduno/clmtrackr.git"},"scripts":{"build":"rollup -c","build-uglify":"rollup -c && uglifyjs build/clmtrackr.js -c > build/clmtrackr.min.js","clean":"rm -rf build"},"author":{"name":"Audun Mathias Øygard","email":"amoygard@gmail.com","url":"https://auduno.com/"},"keywords":["computer-vision"],"license":"MIT","devDependencies":{"rollup":"^0.41.6","rollup-plugin-node-resolve":"^3.0.0","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-json":"^2.3.0","uglify-es":"^3.0.17"},"dependencies":{"jsfeat":"git+https://github.com/inspirit/jsfeat.git","numeric":"^1.2.6","mosse":"^0.1.1","raf":"^3.3.2","promise-polyfill":"^6.0.2"},"gitHead":"0c702208c70ea19ca0cb8c8ca603a86c45db141f","bugs":{"url":"https://github.com/auduno/clmtrackr/issues"},"homepage":"https://github.com/auduno/clmtrackr#readme","_id":"clmtrackr@1.1.2","_shasum":"9dcd27a08a1618275e1033c5f3286da408eb5876","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"auduno","email":"amoygard@gmail.com"},"dist":{"shasum":"9dcd27a08a1618275e1033c5f3286da408eb5876","tarball":"https://registry.npmjs.org/clmtrackr/-/clmtrackr-1.1.2.tgz","integrity":"sha512-FusZIitN21PUyPidmEv2OI4lHuoUOaZ0/tV2LV3fGvc54StyRZ3CKWmSURpiQ4vN0QcDAbTrYfUoZbPRUWhJkg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAt+IZG5xEHNbLGM873jHVXbH+sLig3DSquL6iTZTjogIgTVtUGI5DjDar511LibObLARkevdpOYk2cuoMpvSlX9Q="}]},"maintainers":[{"name":"auduno","email":"amoygard@gmail.com"},{"name":"interwebs","email":"technik@interwebs-ug.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clmtrackr-1.1.2.tgz_1505164711847_0.6505165556445718"}}},"readme":"clmtrackr\n======\n\n[![npm version](https://img.shields.io/npm/v/clmtrackr.svg)](https://www.npmjs.com/package/clmtrackr)\n\n![tracked face](https://auduno.github.io/clmtrackr/examples/media/clmtrackr_03.jpg)\n\n**clmtrackr** is a javascript library for fitting facial models to faces in videos or images. It currently is an implementation of *constrained local models* fitted by *regularized landmark mean-shift*, as described in [Jason M. Saragih's paper](http://dl.acm.org/citation.cfm?id=1938021). **clmtrackr** tracks a face and outputs the coordinate positions of the face model as an array, following the numbering of the model below:\n\n[![facemodel_numbering](https://auduno.github.io/clmtrackr/examples/media/facemodel_numbering_new_small.png)](https://auduno.github.io/clmtrackr/examples/media/facemodel_numbering_new.png)\n\n[Reference](http://auduno.github.io/clmtrackr/docs/reference.html) - [Overview](https://www.auduno.com/2014/01/05/fitting-faces/)\n\nThe library provides some generic face models that were trained on [the MUCT database](http://www.milbo.org/muct/) and some additional self-annotated images. Check out [clmtools](https://github.com/auduno/clmtools) for building your own models.\n\nFor tracking in video, it is recommended to use a browser with WebGL support, though the library should work on any modern browser.\n\nFor some more information about Constrained Local Models, take a look at Xiaoguang Yan's [excellent tutorial](https://sites.google.com/site/xgyanhome/home/projects/clm-implementation/ConstrainedLocalModel-tutorial%2Cv0.7.pdf?attredirects=0), which was of great help in implementing this library.\n\n### Examples ###\n\n* [Tracking in image](https://auduno.github.io/clmtrackr/examples/clm_image.html)\n* [Tracking in video](https://auduno.github.io/clmtrackr/examples/clm_video.html)\n* [Face substitution](https://auduno.github.io/clmtrackr/examples/facesubstitution.html)\n* [Face masking](https://auduno.github.io/clmtrackr/examples/face_mask.html)\n* [Realtime face deformation](https://auduno.github.io/clmtrackr/examples/facedeform.html)\n* [Emotion detection](https://auduno.github.io/clmtrackr/examples/clm_emotiondetection.html)\n* [Caricature](https://auduno.github.io/clmtrackr/examples/caricature.html)\n\n### Usage ###\n\nDownload the minified library [clmtrackr.js](https://github.com/auduno/clmtrackr/raw/dev/build/clmtrackr.js), and include it in your webpage.\n\n```html\n/* clmtrackr libraries */\n<script src=\"js/clmtrackr.js\"></script>\n```\n\nThe following code initiates the clmtrackr with the default model (see the [reference](http://auduno.github.io/clmtrackr/docs/reference.html) for some alternative models), and starts the tracker running on a video element.\n\n```html\n<video id=\"inputVideo\" width=\"400\" height=\"300\" autoplay loop>\n  <source src=\"./media/somevideo.ogv\" type=\"video/ogg\"/>\n</video>\n<script type=\"text/javascript\">\n  var videoInput = document.getElementById('inputVideo');\n  \n  var ctracker = new clm.tracker();\n  ctracker.init();\n  ctracker.start(videoInput);\n</script>\n```\n\nYou can now get the positions of the tracked facial features as an array via ```getCurrentPosition()```:\n\n```html\n<script type=\"text/javascript\">\n  function positionLoop() {\n    requestAnimationFrame(positionLoop);\n    var positions = ctracker.getCurrentPosition();\n    // positions = [[x_0, y_0], [x_1,y_1], ... ]\n    // do something with the positions ...\n  }\n  positionLoop();\n</script>\n```\n\nYou can also use the built in function ```draw()``` to draw the tracked facial model on a canvas :\n\n```html\n<canvas id=\"drawCanvas\" width=\"400\" height=\"300\"></canvas>\n<script type=\"text/javascript\">\n  var canvasInput = document.getElementById('drawCanvas');\n  var cc = canvasInput.getContext('2d');\n  function drawLoop() {\n    requestAnimationFrame(drawLoop);\n    cc.clearRect(0, 0, canvasInput.width, canvasInput.height);\n    ctracker.draw(canvasInput);\n  }\n  drawLoop();\n</script>\n```\n\nSee the complete example [here](https://auduno.github.io/clmtrackr/examples/example.html).\n\n### Development ###\n\nFirst, install [node.js](http://nodejs.org/) with npm.\n\nIn the root directory of clmtrackr, run `npm install` then run `npm run build`. This will create `clmtrackr.js` and `clmtrackr.module.js` in `build` folder.\n\nTo test the examples locally, you need to run a local server. One easy way to do this is to install `http-server`, a small node.js utility: `npm install -g http-server`. Then run `http-server` in the root of clmtrackr and go to `https://localhost:8080/examples` in your browser.\n\n### License ###\n\n**clmtrackr** is distributed under the [MIT License](http://www.opensource.org/licenses/MIT)\n","maintainers":[{"name":"auduno","email":"amoygard@gmail.com"},{"name":"interwebs","email":"technik@interwebs-ug.de"}],"time":{"modified":"2022-06-13T06:11:10.687Z","created":"2016-04-03T10:50:47.702Z","1.0.0":"2016-04-03T10:50:47.702Z","1.0.1":"2016-04-10T18:49:45.020Z","1.1.0":"2017-07-05T22:21:53.122Z","1.1.1":"2017-08-27T19:09:13.591Z","1.1.2":"2017-09-11T21:18:34.548Z"},"homepage":"https://github.com/auduno/clmtrackr#readme","repository":{"type":"git","url":"git+https://github.com/auduno/clmtrackr.git"},"bugs":{"url":"https://github.com/auduno/clmtrackr/issues"},"readmeFilename":"README.md","keywords":["computer-vision"],"author":{"name":"Audun Mathias Øygard","email":"amoygard@gmail.com","url":"https://auduno.com/"},"license":"MIT","users":{"lagora":true}}