SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
tracking.js 
uma nova dimensão 
Zeno Rocha
@zenorocha
discover.liferay.com/tdc2014
Visão computacional
Detecção de faces
Reconhecimento de faces
Robôs autônomos
Realidade virtual
Realidade aumentada
Como fazer isso?
OpenCV
ARToolkit
Como fazer isso 
no browser?
Acessar a câmera 
#1
Acesso à câmera 
navigator.getUserMedia({ 
video: true 
}, onSuccess, onFail);
Reproduzir o vídeo 
#2
<video>
Callback de sucesso 
function onSuccess(stream) { 
var video = document.querySelector('video'); 
video.src = window.URL.createObjectURL(stream); 
video.onloadedmetadata = function(e) { 
// Pronto 
}; 
}
Obter matriz de pixels 
#3
<canvas>
Algoritmos de tracking 
#4
Resumo 
Permissão do 
usuário 
<video> 
Acessar a 
câmera 
Reproduzir 
vídeo 
Algoritmos 
de tracking 
Obter matriz 
de pixels 
<canvas> Resultado
tracking.js
JavaScript 
Eduardo 
Lundgren
Realidade 
aumentada 
Java
Maira 
Bello 
Pablo 
Carvalho 
Zeno 
Rocha 
Time 
Eduardo 
Lundgren 
Java
tracking.js 
100% JavaScript! 
Open Source 
Sem dependências 
de outras bibliotecas 
Algoritmos 
implementados 
Facilmente 
extensível 
API simples e 
intuitiva 
Alta performance 
Testes de unidade e 
de performance 
Setup automático ~ 7 Kb
Trackers
Color Tracker
Demo
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 
}); 
});
Object Tracker
Demo
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 
}); 
});
Custom Tracker
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 
}); 
};
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 
}); 
});
Utilitários
Fast
Brief
Lições aprendidas
41ms por 
frame 
24 fps 
Tempo real
Complexidade do 
algoritmo
Int32Array 
Uint16Array 
Float64Array 
Uint8ClampedArray 
Arrays 
tipados
jsperf.com/tracking-js-arrays
jsperf.com/tracking-js-arithmetic
Demo
</> 
Web Components
Lembra? 
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 
}); 
});
Usando Web Components… 
<video is="video-color-tracking" 
target="magenta" 
camera="true" 
ontrack="onResult">
Documentação
trackingjs.com
Obrigado! 
hi@zenorocha.com 
twitter.com/zenorocha 
trackingjs.com

Mais conteúdo relacionado

Mais procurados

Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHPigorpimentel
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Rafael Ponte
 
Desenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoDesenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoLeandrinho Vieira
 
Armazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaArmazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaEduardo Matos
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeIgor Nicoli
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Criando Jogos com HTML5
Criando Jogos com HTML5Criando Jogos com HTML5
Criando Jogos com HTML5José Farias
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideSergio Azevedo
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
VueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteVueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteJonathan Bijos
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)Luís Cobucci
 
O Mágico mundo de Web Components
O Mágico mundo de Web ComponentsO Mágico mundo de Web Components
O Mágico mundo de Web ComponentsMateus Ortiz
 

Mais procurados (20)

JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
Labs JavaScript - AIT
Labs JavaScript - AITLabs JavaScript - AIT
Labs JavaScript - AIT
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)Hibernate efetivo (COALTI-2014 / ALJUG)
Hibernate efetivo (COALTI-2014 / ALJUG)
 
Desenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoDesenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivo
 
Armazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwaArmazenamentos offline-ap is-para-pwa
Armazenamentos offline-ap is-para-pwa
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Criando Jogos com HTML5
Criando Jogos com HTML5Criando Jogos com HTML5
Criando Jogos com HTML5
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-Side
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
VueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteVueJS - Uma alternativa elegante
VueJS - Uma alternativa elegante
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
O Mágico mundo de Web Components
O Mágico mundo de Web ComponentsO Mágico mundo de Web Components
O Mágico mundo de Web Components
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 

Semelhante a tracking.js biblioteca JavaScript para rastreamento de objetos em tempo real

Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livrepichiliani
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaLoiane Groner
 
Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Loiane Groner
 
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenziejonathanblacknight
 
Ferramentas de automação de teste
Ferramentas de automação de testeFerramentas de automação de teste
Ferramentas de automação de testeMarcos Pessoa
 
FAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaFAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaLoiane Groner
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplosCalvin Rodrigues
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Stefanini
 
[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap
[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap
[Curso Phonegap / Cordova] Aula 01: Introdução ao PhonegapLoiane Groner
 
Oficina: Realidade Aumentada
Oficina: Realidade AumentadaOficina: Realidade Aumentada
Oficina: Realidade AumentadaNellie Santee
 
Web Rangers e Power APIs
Web Rangers e Power APIsWeb Rangers e Power APIs
Web Rangers e Power APIsEliezer Bernart
 
HTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoHTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoCaio Gondim
 

Semelhante a tracking.js biblioteca JavaScript para rastreamento de objetos em tempo real (20)

Tracking js
Tracking jsTracking js
Tracking js
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
 
HTML5 Sensitivo
HTML5 SensitivoHTML5 Sensitivo
HTML5 Sensitivo
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
 
Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)Congresso TI 2015: Introducao ao Phonegap (Cordova)
Congresso TI 2015: Introducao ao Phonegap (Cordova)
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
 
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - MackenzieIntrodução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
Introdução ao desenvolvimento de jogos em OGRE 3D - Mackenzie
 
Ferramentas de automação de teste
Ferramentas de automação de testeFerramentas de automação de teste
Ferramentas de automação de teste
 
FAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaFAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e Cordova
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplos
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap
[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap
[Curso Phonegap / Cordova] Aula 01: Introdução ao Phonegap
 
Oficina: Realidade Aumentada
Oficina: Realidade AumentadaOficina: Realidade Aumentada
Oficina: Realidade Aumentada
 
Projetando Mobile 2 - PhoneGap
Projetando Mobile 2 - PhoneGapProjetando Mobile 2 - PhoneGap
Projetando Mobile 2 - PhoneGap
 
Workshop05
Workshop05Workshop05
Workshop05
 
Web Rangers e Power APIs
Web Rangers e Power APIsWeb Rangers e Power APIs
Web Rangers e Power APIs
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
HTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoHTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmo
 

Mais de Zeno Rocha

Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedZeno Rocha
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web DevelopmentZeno Rocha
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + WearablesZeno Rocha
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!Zeno Rocha
 
Liferay UI (R)evolution
Liferay UI (R)evolutionLiferay UI (R)evolution
Liferay UI (R)evolutionZeno Rocha
 
Getting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIGetting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIZeno Rocha
 
How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsZeno Rocha
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScriptZeno Rocha
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endZeno Rocha
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosZeno Rocha
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateZeno Rocha
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Zeno Rocha
 

Mais de Zeno Rocha (15)

Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existed
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web Development
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + Wearables
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!
 
Liferay UI (R)evolution
Liferay UI (R)evolutionLiferay UI (R)evolution
Liferay UI (R)evolution
 
Getting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIGetting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUI
 
How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java Portals
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScript
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-end
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados Abertos
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 Boilerplate
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5
 
HTML 5
HTML 5HTML 5
HTML 5
 
Wordpress
WordpressWordpress
Wordpress
 

tracking.js biblioteca JavaScript para rastreamento de objetos em tempo real