SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
Maira Bello
tracking.js
uma nova dimensão
Maira Bello
discover.liferay.com/frontinbh
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
Time
Zeno RochaEduardo
Lundgren
Java
Maira Bello
Pablo Carvalho
Zeno Rocha
Time
Eduardo
Lundgren
Java
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
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 frames
por
segundo
Tempo real
Complexidade do algoritmo
Int32Array
Uint16Array
Float64Array
Uint8ClampedArray
Arrays
tipados
jsperf.com/tracking-js-arrays
jsperf.com/tracking-js-arithmetic
Demo
Web Components
</>
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?
<video is="video-color-tracking"	
target="magenta"	
camera="true"	
ontrack="onResult">	
</video>	
Usando Web Components…
Documentação
trackingjs.com
Obrigada!
maira.araujo@liferay.com
trackingjs.com

Mais conteúdo relacionado

Semelhante a tracking.js: uma biblioteca JavaScript para visão computacional 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
 
Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Vanderson Silva
 
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
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplosCalvin Rodrigues
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonwhanderley freitas
 
Detecção de Movimento - Criação de instrumento musical
Detecção de Movimento - Criação de instrumento musicalDetecção de Movimento - Criação de instrumento musical
Detecção de Movimento - Criação de instrumento musicalAristidis Jesus
 
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
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingSamanta Cicilia
 
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
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapLoiane Groner
 
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptx
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptxAULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptx
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptxAndrLuizDosSantos24
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Alvaro Viebrantz
 
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
TDC2016POA | Trilha Web -  Realidade Virtual com WebVRTDC2016POA | Trilha Web -  Realidade Virtual com WebVR
TDC2016POA | Trilha Web - Realidade Virtual com WebVRtdc-globalcode
 
Interfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualInterfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualCampus Party Brasil
 

Semelhante a tracking.js: uma biblioteca JavaScript para visão computacional 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
 
Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2
 
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)
 
Projetando Mobile 2 - PhoneGap
Projetando Mobile 2 - PhoneGapProjetando Mobile 2 - PhoneGap
Projetando Mobile 2 - PhoneGap
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplos
 
HTML5 Sensitivo
HTML5 SensitivoHTML5 Sensitivo
HTML5 Sensitivo
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e python
 
Detecção de Movimento - Criação de instrumento musical
Detecção de Movimento - Criação de instrumento musicalDetecção de Movimento - Criação de instrumento musical
Detecção de Movimento - Criação de instrumento musical
 
Material screenr
Material screenrMaterial screenr
Material screenr
 
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?
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
 
Chromecast na Qcon RJ
Chromecast na Qcon RJChromecast na Qcon RJ
Chromecast na Qcon RJ
 
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
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGap
 
Watch face gdg jf
Watch face gdg jfWatch face gdg jf
Watch face gdg jf
 
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptx
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptxAULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptx
AULA 06 - CRIAÇÃO E EDIÇÃO DE VÍDEOS - IFSC.pptx
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces
 
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
TDC2016POA | Trilha Web -  Realidade Virtual com WebVRTDC2016POA | Trilha Web -  Realidade Virtual com WebVR
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
 
Interfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualInterfacestangiveiscomputacaovisual
Interfacestangiveiscomputacaovisual
 

Mais de Maira Bello

Edge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfEdge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfMaira Bello
 
ASTs - o poder nas suas mãos
ASTs - o poder nas suas mãosASTs - o poder nas suas mãos
ASTs - o poder nas suas mãosMaira Bello
 
HackaPET 2019: React
HackaPET 2019: ReactHackaPET 2019: React
HackaPET 2019: ReactMaira Bello
 
HackaPET 2019: HTML/CSS
HackaPET 2019: HTML/CSSHackaPET 2019: HTML/CSS
HackaPET 2019: HTML/CSSMaira Bello
 
Escalando graphql
Escalando graphqlEscalando graphql
Escalando graphqlMaira Bello
 
Optimizing Web Performance - A personal experience
Optimizing Web Performance - A personal experienceOptimizing Web Performance - A personal experience
Optimizing Web Performance - A personal experienceMaira Bello
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAMaira Bello
 

Mais de Maira Bello (7)

Edge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdfEdge middleware acelerando o ecommerce.pdf
Edge middleware acelerando o ecommerce.pdf
 
ASTs - o poder nas suas mãos
ASTs - o poder nas suas mãosASTs - o poder nas suas mãos
ASTs - o poder nas suas mãos
 
HackaPET 2019: React
HackaPET 2019: ReactHackaPET 2019: React
HackaPET 2019: React
 
HackaPET 2019: HTML/CSS
HackaPET 2019: HTML/CSSHackaPET 2019: HTML/CSS
HackaPET 2019: HTML/CSS
 
Escalando graphql
Escalando graphqlEscalando graphql
Escalando graphql
 
Optimizing Web Performance - A personal experience
Optimizing Web Performance - A personal experienceOptimizing Web Performance - A personal experience
Optimizing Web Performance - A personal experience
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORA
 

tracking.js: uma biblioteca JavaScript para visão computacional em tempo real