Programação para Kinect

49 respostas
C

Alguem por aqui programa para Kinect ? (Linguagem C++, VB.Net ou C#)
Da pra programar no Netbeans com C++;

Usa o SDK - Kinect for Windows, mas é necessário ter o kinect pra windows sai por R$ 250;

Pra dar um exemplo: http://caixabranca.net/2011/09/21/programando-para-kinect/

49 Respostas

V

Olá, eu terei as mesmas funcionalidades se eu usar o kinect para xbox usando o SDK 1.5 que se eu usar o Kinect for windows usando a SDK 1.5?

V

Oi.

Uma alternativa ao Kinect for Windows é a OpenNI, que tem bindings para Java também:
http://www.openni.org/

Com ela, ao invés dos drivers oficiais, você deve usar o driver da PrimeSense (empresa que criou o hardware do Kinect para MS):

A diferença do Kinect para X-Box para o Kinect for Windows é basicamente a distância mínima e máxima do aparelho.
No caso do Windows, você pode usar o dispositivo de mais de perto. No caso do Kinect, você deve respeitar uma distância mínima de aproximadamente 1,5m.

Mas é possível comprar o Kinect para X-Box e liga-lo no PC. Só recomendo que você compre a versão que não vem com o X-Box, pois é a única que vem com fonte de alimentação externa.

V

Muito obrigado ViniGodoy pelos exclarecimentos!

Minha dúvida realmente era essa, se valeria a pena comprar um Kinect for windows, pois to com a possibilidade de adquirilo por 510 reais, uma pessoa irá trazê-lo de fora para mim. Já que eu encontro kinect xbox por 340 reais no mercado livre já com a fonte, com frente por pac ficaria entre 360 a 370 reais. E minha finalidade pelo menos no momento é apenas programação.

V

Tranquilo.

Tenho montada uma API que integra a OpenNI ao OpenCV, escrita em C++, caso tenha interesse.

Estou usando o Kinect com a OpenCV2.x para reconhecimento de sinais da Lingua de Sinais Brasileira.

V

ViniGodoy,

você ler pensamentos! Poderia ganhar dinheiro com isso. rsrsrsrs

Eu justamente to querendo comprar um kinect para fazer estudos sobre reconhecimento da liguagens de sinais brasileira. Tenho interesse sim, e muito. Se puder me passar ficarei muito grato. To querendo algo para meu TCC. Inclusive venho estudando tem alguns meses. Opencv, legal, eu to mais familiarizado com a 2.3, mas é tranquilo.

A dificudade maior que vejo é o rastreamento de dos, preciso do kinect para testar. Mas estive lendo da identificação estática também da mão, mas também precisaria testar. Tudo usando a câmera infra ir de profundidade. Mas o SDK da microsoft não tem suporte a rastreamento de dedos, até onde sei, eis o problema. Vi textos na internet que essa funcionalidade deve sair na SDK 2.0.

Muito obrigado!

Vianney

V

Oi.

Nenhum dos SDKs possui suporte ao rastreamento dos dedos.
Até porque, a precisão do Kinect não é muito grande.

Não é à toa que essa pesquisa é feita no meu mestrado, na área de visão computacional.

E está beeeem longe de ser trivial, especialmente no caso de Libras.

Se seu TCC é para graduação, sugiro fazer algo mais simples, como isso aqui:

Outra possibilidade seria fazer o rastreamento dos dedos, ou considerar alguns sinais da datilologia com a mão parada, esticada para frente (o que já poderia fazer algum dispositivo de entrada).

No meu caso, pretendo usar uma rede SOM para identificar a configuração da mão como um todo. Em seguida, combinar a informação da localização e trajetória da mão, para tentar identificar o sinal como um todo. A modelagem do sinal seria feita através dos modelos escondidos de Markov.

V

Só para comentar, pretendo baixar a OpenCV 2.4.1 esse final de semana. Provavelmente tudo deverá continuar funcionando, pois a OpenCV dificilmente quebra compatibilidade.

Também vou jogar esse pacote de integração de opencv + openni no GiThub. Aí deixo o link aqui para quem quiser baixar.

A parte de Libras não vou disponibilizar online, pelo menos ainda.
Ainda estou gravando uma base de dados com palavras.

V

Eu imaginei que seria complexo. A minha ideia par TCC seria reconhecer algumas letras do alfabeto apenas, e quem sabe formar uma palavra.Mas não sei se será possível mesmo. Eu irei tentar entrar no mestrado na mesma área de Visão Computacional. Se puder disponibilizar o pacote ficarei grato. Meu tcc é para dezembro, to começando agora nas férias justamente para saber o que consigo fazer, até pensei em não usar kinect fazer algo usar artoolkit, ou flartoolk ou HandyAR. Pensei em algo para ensinar crianças pequenas usando handyAR

Eu penso também algo voltado a educação, como algo para crianças pequena. A libra foi uma ideia que tive que achei interessante. Pode achar engraçado, mas muitas vezes vejo deficientes auditivos conversando libras, rindo, e eu morro de vontade de saber o que eles estão conversando, quando vi o kinect tive a ideia.

O que gosto na open cv nova que ela é mais prática, menos linha de código.

Uma coisa que achei nas minhas pesquisas que talvez seja melhor que o kinect é o leap. Pelo que percebi é um sensor voltado para as mãos pois elas terão que está sobre ele para poder serem rastreadas, de acordo com fabricante tem uma precisão de 0,001 mm. A leitura é feita de baixo para cima. Agora o único impedimento que vejo para a libras brasileira é que não sei se ele consegue ler a mão na posição vertical punho para baixo e dedos para cima, e pelo que percebo muito movimentos ficam nessa posição. Mais ai só vendo. Muitos dizem que o leap é concorrente do kinect, eu não concordo, pois vejo funcionalidade diferentes para ambos, pelo menos até o momento. http://leapmotion.com/ .

ViniGodoy muito obrigado pela ajuda que tem dado.

Abraço
Vianney

V

Uma coisa que tem que ficar claro: Os gestos das letras do alfabeto (datilologia libras) não é falar Libras.

Libras não é uma versão gesticulada do português. Muitos deficientes auditivos sabem falar libras, mas não sabem escrever em português, portanto, não saberiam soletrar uma palavra.
Se seu objetivo for surdos-mudos, de nada adianta fazer o alfabeto. Eles talvez só vão saber gesticular o próprio nome.

Para identificar a Libras mesmo, você precisa:
a) Capturar a posição relativa da mão (faz diferença se um gesto é feito na altura da cabeça ou na altura do peito, por exemplo);
b) O movimento realizado pela mão. Uma boa descrição desses movimentos (em anexo) pode ser encontrada em:
Carneiro, Alex T. S., Cortez, Paulo C. e Costa, Rodrigo C.S. , “Reconhecimento de Gestos da LIBRAS com Classificadores Neurais a partir dos Momentos Invariantes de Hu,” in Interaction 09 - South America, São Paulo, 2009.
c) A configuração dos dedos. Uma lista completa das 61 posições possíveis em Libras pode ser encontrada em (em anexo):
Pimenta, Nelson e Quadros, Ronice Müller , Curso LIBRAS 1, 4th ed.: Vozes, 2010.

Os movimentos são bastante amplos. Tem movimentos que começam nas pernas e vão até a cabeça, por exemplo. Isso descarta totalmente o uso do LEAP.

Não faz diferença se o sinal é gesticulado com a mão direita ou esquerda: a pessoa gesticula geralmente com base em sua mão primária. Esse detalhe deve ser levado em conta, pois você terá que tratar pessoas canhotas que gesticulam de maneira “refletida”.

Por fim, você também pode levar em consideração a identificação de uma só palavra gesticulada, ou de um diálogo. O segundo é mais complexo que o primeiro, não só pelo fato dos sinais terem que ser separados um dos outros, mas pelo fato de entre um sinal e outro haver um gesto que deve ser descartado (chamado de epêntese). Por exemplo, se alguém gesticula a balavra boi (que basicamente é fazer um chifre com os dedos indicadores na cabeça) e na sequencia vai gesticular a palavra polvo (cujo gesto começa ao lado da perna), haverá o deslocamento da mão da cabeça até a perna. E esse deslocamento não representa gesto nenhum.

No seu caso, como se trata de um TCC de graduação, acho que tratar a datilologia é suficiente. Já vai ser um ótimo tema. É mais simples, mas não chega a ser trivial. Também tem cunho social - pois pode aproximar pessoas que falam no universo Libras e pode criar um dispositivo de entrada gestual para quem é surdo e mudo. E também já vai te colocar em contato com várias das tecnologias que você usaria num futuro mestrado, em especial, os classificadores. Os sinais também são gesticulados de maneira relativamente controlada, o que facilita enormemente a separação da mão do resto da cena (segmentação).

Não recomendo Libras como um todo, pois além da classificação, você terá que se preocupar muito com rastreamento e segmentação. Na Libras mesmo, é muito mais difícil segmentar sinais que ocorrem ao lado da bochecha, por exemplo (já envolve detectores de pele, análise de contorno, etc). Deixe para ver isso no mestrado, pois você provavelmente terá disciplinas exclusivamente para tratar desse assunto, e um orientador especialista em reconhecimento de padrões para te dar as dicas.

Já com o trabalho em datilologia, você já entra no mestrado pronto para fazer as perguntas certas nas aulas de processamento de imagens e morfologia matemática. O que já é bem à frente do que eu mesmo entrei.




V

Conforme prometido, este é o projeto que integra OpenNI e OpenCV:

Na pasta samples, tem um pequeno exemplo de uso.

V

Oi Vini, muito obrigado, desculpa não ter respondido antes pois, estive fora uns dias.

Então o que quero fazer no meu TCC é digitação em libras. Ainda não tenho a menor ideia como irei fazer isso, preciso testar e ver como faço isso.

Irei dá uma olhada nos arquivos e na proposta do teu mestrado sim.

Muito obrigado!

J

ViniGodoy:
Tranquilo.

Tenho montada uma API que integra a OpenNI ao OpenCV, escrita em C++, caso tenha interesse.

Estou usando o Kinect com a OpenCV2.x para reconhecimento de sinais da Lingua de Sinais Brasileira.

Nossa cara que iniciativa bacana.

V

Atualizei novamente a lib para incluir as funções de player de vídeo (play, pause, step e jump).
Também incluí mais um exemplo que mostra como usar o foreach da xncv. É uma mão na roda na hora de processar pixel por pixel, pois a sintaxe da opencv (quando vc quer fazer de maneira otimizada) é um pouco esquisita:

Vec3 pixel = mat.ptr<Vec3>.ptr(y)[x];

O foreach também já leva em consideração a otimização para quando matrizes são contínuas.

V

Valeu. :slight_smile:

V

Primeiro teste, vou ver se sai com rastreamento estático da mão.

V

Dê uma olhada na documentação da OpenNI que ela tem um exemplo de como gerar o esqueleto.
Vou acrescentar módulos para o esqueleto na xncv no próximo final de semana.

É que pretendo criar um formato de arquivo (.skl) e gravar o esqueleto junto com os vídeos.

Não é possível gerar o esqueleto usando como base os vídeos gravados no formato .oni, pois ele usa uma compressão um tanto agressiva. Por isso, é importante já gravar a informação de onde o esqueleto estava no momento da captura.

V

Ok, irei fazer isso.
Ele gera esqueleto das mãos também?

V

vianney:
Ok, irei fazer isso.
Ele gera esqueleto das mãos também?

Uma das juntas é a mão. Mas não gera juntas para os dedos.
Aí é onde o bicho pega.

Mas já é uma boa para auxiliar na segmentação.

W

Valeu. :)
Legal mesmo! Fico imaginando a funcionalidade que a Microsoft apresentou este ano na E3, fazer buscas e navegar no dashboard com comandos de voz. Usando a sua API poderia ser possivel de implemtar a mesma funcionalidade mas com linguagem de sinais.

//Daniel

V

No futuro, espero que um surdo possa fazer uma busca de um sinal que desconhece no Google. Isso abriria portas para surdos que não falam o português usarem a internet. E, melhor que isso, mesmo os que falam, já pensaram em quanto é difícil buscar um sinal? Você escreve o que??

V

Eu imaginei um uso para comunicação entre surdo-mudo e cegos. Porque o cego não enxerga mas escuta, enquanto o surdo enxerga mas não escuta.

Tipo se conseguíssemos no futuro colocar isso em um celular, juntando essa ideia com reconhecimento de voz isso seria possível, e quebraria uma barreira. Foi uma das primeiras coisas que pensei, quando imaginei o TCC, mas lógico para um futuro. No caso ai dá para fazer dois projetos complementares.

V

Oi vini,
esse seu mestrado vai ser uma grande colaboração para comunidade. Estive pesquisando e achei um protótipo desenvolvido por um dos MIC. Não mostra muita palavra mas já dá uma ideia da coisa.

Estava pesquisando e achei esse vídeo, muito legal.

V

Esse sábado acrescentei o recurso de gerar o esqueleto de forma simples, e desenha-lo numa imagem da OpenCV.
Incluí também o exemplo skeleton.cpp para quem quiser ver funcionando.

V

Obrigado Vini. Só me restar arrumar o sensor agora.

V

Acrescentei na biblioteca a possibilidade de gravar arquivos .oni.
Inclusive, escolhendo a taxa de compressão. Atualizei o exemplo do player para fazer também gravação.

Basta iniciá-lo sem nome de arquivo nenhum e apertar “R” para a gravação começar/parar:
https://github.com/ViniGodoy/xncv/blob/master/samples/simpleplayer.cpp

Um arquivo de nome recordSample.oni será gerado no mesmo diretório da aplicação.

L

O Kinect sem fonte não funciona pra windows?

V

Ligado, sim. Desligado não. E para ligar vc teria que ligar o xbox junto.

L

Ligado, sim. Desligado não. E para ligar vc teria que ligar o xbox junto.

E tem como eu ligar ele junto com o xbox e o sensor ser reconhecido no windows? como faço pra ligar os 3 juntos?

V

Boa pergunta. Meu sensor tem o cabo de alimentação.

W

ViniGodoy blz?

Estou comessando a programar para kinect e gostaria de uma sugestão por onde devo comessar meus estudos?

Outra coisa consigo capturar o movimento de abrir e fechar as mão?

minha itenção final é integrar o kinect com o arduino, meu maior problema é o kinect tem pouco material disponivél.

vc poderia passar como fasso para fazer o rastreamento das mão por exemplo.

grato

V

wog.nascimento:
ViniGodoy blz?

Estou comessando a programar para kinect e gostaria de uma sugestão por onde devo comessar meus estudos?

Outra coisa consigo capturar o movimento de abrir e fechar as mão?

minha itenção final é integrar o kinect com o arduino, meu maior problema é o kinect tem pouco material disponivél.

vc poderia passar como fasso para fazer o rastreamento das mão por exemplo.

grato

Oi. Seu teclado está sem a tecla do ç?

O Kinect não pega o movimento dos dedos, isso está prometido para a próxima versão.

Se você quiser estudar, tem dois caminhos. O SDK da Microsoft ou as classes da OpenNI.

W

Ok, mas qual vc sugeria o estudo?

V

Depende… o que vc quer fazer? Sua app precisa ser portável?
Você tem quanto tempo? Sabe programar em c++?

W

eu quero integrar o arduino com o kinect, trabalho com mecatronica e tenho um bom conhecimento em c++, tenho cerca de 3 meses para apresentar algo para um cliente.

Nesta parte inicial do projeto, preciso só entender como capturar um movimento tipo mover a cabeça, braço e um bulo.

grato

V

Nesse caso, use a OpenNI. A biblioteca que fiz pode te ajudar bastante, pois ela permite facilmente a captura do esqueleto.

A

Nem sei se ainda existe alguém nesse tópico, mas se puderem responder agradeço. Eu estou precisando fazer meu TCC e estava pensando em usar o Kinect, mas não sei se o Kinect ajudaria. Passado dois anos que vocês utilizam-o, acredito que devem ter muito mais conhecimento a respeito do assunto que eu. O centro da minha vida basicamente é se seria possível com o Kinect capturar uma ou mais imagens em tempo real e converter em String para minha base de dados. Alguém sabe responder?

Vou dar um exemplo que é o melhor que eu consigo imaginar e é bem próximo da ideia que eu tenho em mente. Um radar (pardal), quando um carro passa em alta velocidade ele captura a placa e acredito que salva automaticamente essa foto, converte a placa em String e envia para base de dados, onde a multa é aplicada. Não tenho certeza se são todas essas etapas, mas o que eu tenho pensado é isso, pegar um conjunto de caracter e converter para string.

Agradeço a atenção.

V

O kinect captura a uma taxa de 30 frames por segundo. Isso é baixo para a maioria das aplicações onde você tem um veículo se movendo rapidamente na frente da câmera.

É possível sim fazer OCR em tempo real, mas de imagens relativamente paradas (pessoas na frente da câmera).

Agora, combinar o Kinect e uma ferramenta de OCR é um tema muito simples, mesmo para um TCC de faculdade. O Kinect já vai te gerar imagens coloridas e basta encaminha-las para uma das inúmeras APIs de OCR do mercado.

A

Obrigado pela resposta. Realmente 30FPS é baixo, mas para o que eu preciso talvez dê já que pretendo colocar a câmera em movimento junto com o objeto que estará se movendo.

abraços.

V

[email removido:
]Obrigado pela resposta. Realmente 30FPS é baixo, mas para o que eu preciso talvez dê já que pretendo colocar a câmera em movimento junto com o objeto que estará se movendo.

abraços.

O que você pensa em fazer?

Dê uma olhada no livro OpenNi cookbook. Ele é uma boa introdução ao Kinect.

A

Eu quero fazer algo similar aos radares de transito, porém em movimento… e pensei em usar o kinect para isso.

S

Olá!

Vini, sou novo aqui no fórum. Encontrei esse fórum pois estava na busca de mais informações para programação no Kinect pois estou participando de um projeto de pesquisa na minha faculdade que tem a pretensão de criar uma ferramenta para pessoas com deficiência auditiva e usuários de libras. Acredito que será muito similar ao seu projeto de mestrado. Gostaria de algumas informações a respeito da programação do Kinect que melhor se adapta para esse projeto.

V

silvestersn:
Olá!

Vini, sou novo aqui no fórum. Encontrei esse fórum pois estava na busca de mais informações para programação no Kinect pois estou participando de um projeto de pesquisa na minha faculdade que tem a pretensão de criar uma ferramenta para pessoas com deficiência auditiva e usuários de libras. Acredito que será muito similar ao seu projeto de mestrado. Gostaria de algumas informações a respeito da programação do Kinect que melhor se adapta para esse projeto.

Oi. Que informações?

A

charleston10:
Alguem por aqui programa para Kinect ? (Linguagem C++, VB.Net ou C#)
Da pra programar no Netbeans com C++;

Usa o SDK - Kinect for Windows, mas é necessário ter o kinect pra windows sai por R$ 250;

Pra dar um exemplo: http://caixabranca.net/2011/09/21/programando-para-kinect/

Alguém pode me ajudar, com a programação do kinect alguém tem algum tutorial ?

A

Amigo tenho interesse de programar com kinect para reconhecimento facial, será que pode ser ?

V

Com certeza. Nesse caso, use os bones para encontrar a localização da cabeça e rastrea-la, e você pode usar a imagem da câmera RGB para o reconhecimento facial em si (provavelmente com OpenCV).

Caso seu objetivo seja só comercial, e não entender como isso funciona, provavelmente há APIs comerciais para isso.

A

Não é pra fins comerciais, quero usar no meu TCC e encaminhar para o mestrado, vc poderia me dá umas dicas por onde posso comerçar?

V

Sim. Comece estudando o SDK do Kinect. Pode ser tanto o da Microsoft (exclusivo para Windows) ou o SDK da OpenNI (aberto). Há um livro bom sobre o segundo chamado OpenNI Cookbook, eu li o livro inteiro, pois fui revisor. Ele é publicado pela Packt Publishing. Eu usei a OpenNI no meu mestrado.

Depois disso, com certeza vale a pena consultar a OpenCV. Há muito material sobre ela na internet, mas livros como o OpenCV Cookbook também ajudam. Outro livro legal é o OpenCV by Example, que será lançado pela Packt nos próximos meses, e que possuirá um capítulo inteiro sobre isso explicar o uso de Haar cascades. Esse livro também explica bem vários algoritmos para filtrar e simplificar imagens. Eu conheço bem o livro pois escrevi 2 capítulos dele, sobre OCR (não ajudariam no seu caso).

Finalmente, não tenha medo de estudar a fundo alguns dos algoritmos - especialmente se pretende entrar na área acadêmica. Para isso, um bom livro é o Algorithms for Image Processing and Computer Vision, da Wiley.

W

Oi ViniGodoy,
Cara estou começando a estudar sobre o kinect com arduino fazer umas brincadeiras mesmo.
Acessei a openkinect.org e la tem varios tutorias, consegui reconhecer o kinect de boa, mas só existe coisas antigas a respeito da OpenNI acredito ate que foi descontinuada, não consigo instalar aqui no meu ubuntu 14.04.

Tem alguma dica?

Vlw.

C

ViniGodoy estou para começar a mexer com openni e opencv teria como fazer uma parceria pois irei tentar fazer alguns programas nele e uns com grandes bibliotecas.
Simples seria fazer um programa igual ipi soft e que exporte em FBX , BOV e etc
Complexo preciso apenas do opencv para fazer mapeamente em um objeto 3d e criar outros objetos aparti de verteces.exemplo: corel / ilustration que voce desenha em vetor,mas quero desenha em vetor e fazer o vetor criar um objeto 3d partir dos pontos e dps usar fisica.

Criado 1 de março de 2012
Ultima resposta 4 de fev. de 2018
Respostas 49
Participantes 13