Tracking js

61
Maira Bello tracking.js uma nova dimensão

description

Meet tracking.js, an open source computer vision library for JavaScript that allows you to easily build new interactions for the web. Conheça o tracking.js, uma biblioteca de visão computacional open source para JavaScript que facilita a criação de novas interações na web.

Transcript of Tracking js

Page 1: Tracking js

Maira Bello

tracking.jsuma nova dimensão

Page 2: Tracking js

Maira Bello

Page 3: Tracking js
Page 4: Tracking js

discover.liferay.com/frontinbh

Page 5: Tracking js

Visão computacional

Page 6: Tracking js

Detecção de faces

Page 7: Tracking js

Reconhecimento de faces

Page 8: Tracking js

Robôs autônomos

Page 9: Tracking js

Realidade virtual

Page 10: Tracking js

Realidade aumentada

Page 11: Tracking js

Como fazer isso?

Page 12: Tracking js

OpenCV

Page 13: Tracking js

ARToolkit

Page 14: Tracking js

Como fazer isso no browser?

Page 15: Tracking js

Acessar a câmera

#1

Page 16: Tracking js

Acesso à câmera

navigator.getUserMedia({ video: true}, onSuccess, onFail);

Page 17: Tracking js

Reproduzir o vídeo

#2

Page 18: Tracking js

<video>

Page 19: Tracking js

Callback de sucesso

function onSuccess(stream) { var video = document.querySelector('video'); video.src = window.URL.createObjectURL(stream); video.onloadedmetadata = function(e) { // Pronto };}

Page 20: Tracking js

Obter matriz de pixels

#3

Page 21: Tracking js

<canvas>

Page 22: Tracking js

Algoritmos de tracking

#4

Page 23: Tracking js

Resumo

Permissão do usuário

<video>

Acessar a câmera

Reproduzir vídeo

Algoritmos de tracking

Obter matriz de pixels

<canvas> Resultado

Page 24: Tracking js

tracking.js

Page 25: Tracking js

JavaScript

Eduardo Lundgren

Page 26: Tracking js

Realidade aumentada

Java

Page 27: Tracking js

Time

Zeno RochaEduardo Lundgren

Java

Page 28: Tracking js
Page 29: Tracking js

Maira Bello

Pablo Carvalho

Zeno Rocha

Time

Eduardo Lundgren

Java

Page 30: Tracking js

100% JavaScript!

Open Source

Sem dependências de outras bibliotecas

tracking.js

Algoritmos implementados

Facilmente extensível

API simples e intuitiva

Alta performance

Testes de unidade e de performance

Setup automático ~ 7 Kb

Page 31: Tracking js

Trackers

Page 32: Tracking js

Color Tracker

Page 33: Tracking js
Page 34: Tracking js

Demo

Page 35: Tracking js

var tracker = new tracking.ColorTracker(‘magenta’);!

tracking.track('#video', tracker, { camera: true});!

tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 36: Tracking js

Object Tracker

Page 37: Tracking js
Page 38: Tracking js

Demo

Page 39: Tracking js

var tracker = new tracking.ObjectTracker(‘face’);!

tracking.track('#video', tracker, { camera: true});!

tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 40: Tracking js

Custom Tracker

Page 41: Tracking js

var MyTracker = function() { MyTracker.base(this, 'constructor');};!

tracking.inherits(MyTracker, tracking.Tracker);!

MyTracker.prototype.track = function(pixels, width, height) { // Seu código aqui!

this.emit('track', { // Seu código aqui });};

Page 42: Tracking js

var tracker = new tracking.MyTracker();!

tracking.track('#video', tracker, { camera: true});!

tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 43: Tracking js

Utilitários

Page 44: Tracking js

Fast

Page 45: Tracking js
Page 46: Tracking js

Brief

Page 47: Tracking js
Page 48: Tracking js

Lições aprendidas

Page 49: Tracking js

41ms por frame

24 frames por

segundo

Tempo real

Page 50: Tracking js
Page 51: Tracking js

Complexidade do algoritmo

Page 52: Tracking js

Int32Array

Uint16Array

Float64Array

Uint8ClampedArray

Arrays tipados

Page 53: Tracking js

jsperf.com/tracking-js-arrays

Page 54: Tracking js

jsperf.com/tracking-js-arithmetic

Page 55: Tracking js

Demo

Page 56: Tracking js

Web Components

</>

Page 57: Tracking js

var tracker = new tracking.ColorTracker(‘magenta’);!

tracking.track('#video', tracker, { camera: true});!

tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Lembra?

Page 58: Tracking js

<video is="video-color-tracking" target="magenta" camera="true" ontrack="onResult"></video>

Usando Web Components…

Page 59: Tracking js

Documentação

Page 60: Tracking js

trackingjs.com

Page 61: Tracking js

[email protected]

trackingjs.com