Esta biblioteca permite que você use sua webcam integrada ou externa diretamente do Java. Ele foi projetado para abstrair recursos de câmera comumente usados e oferecer suporte a várias estruturas de captura.
Suponha uma situação em que seu código dependa de algum framework de captura, mas de repente você terá que abandoná-lo e usar um diferente, talvez mais novo (por exemplo, substituir o JMF arcaico pelo GStreamer mais recente). Ao fazer isso, você terá que reescrever uma parte significativa do seu código porque essas estruturas são completamente diferentes e nem um pouco compatíveis. É aqui que a API Webcam Capture vem para salvar o mundo - ela foi criada para remover o fardo de tais situações, para que você não precise reescrever seu código novamente, mas em vez disso, você pode simplesmente mudar a classe do driver para uma classe diferente.
A última versão estável é: 0.3.12
A última versão de desenvolvimento é: 0.3.13-SNAPSHOT
(e outros dispositivos ARM)
A versão mais recente (0.3.10) não funciona em ARM imediatamente. Para fazê-lo funcionar, você precisa substituir a versão 0.6.2 do BridJ JAR pelo 0.6.3-SNAPSHOT ou pelo bridj-0.7-20140918 mais recente. Além disso, recentemente Jonathon Hare da equipe OpenIMAJ encontrou um problema descrito no bridj #525 que causa problemas na arquitetura armhf.
A versão estável mais recente está disponível no Maven Central:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
Versão instantânea:
< repository >
< id >Sonatype OSS Snapshot Repository</ id >
< url >http://oss.sonatype.org/content/repositories/snapshots</ url >
</ repository >
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.13-SNAPSHOT</ version >
</ dependency >
A versão estável mais recente pode ser baixada como um binário ZIP separado. Este arquivo ZIP contém a própria API Webcam Capture e todas as dependências necessárias (no diretório libs
). Clique no link abaixo para baixá-lo:
captura de webcam-0.3.12-dist.zip
A última versão de desenvolvimento JAR (também conhecida como SNAPSHOT) pode ser baixada aqui.
Se você tiver muita vontade, tempo livre, conhecimento ou até mesmo uma pequena quantia de dinheiro que gostaria de gastar para um bom propósito, você pode ajudar a desenvolver esta incrível API de captura de webcam e torná-la ainda melhor! Vários tipos de contribuições são muito bem-vindos:
Se você acha que este projeto é ótimo, você gostaria de ajudar, mas não sabe como - você pode se tornar o observador das estrelas do projeto. Ao estrelar você está tornando o projeto mais popular. Visite este link se quiser saber mais sobre como funcionam as notificações e estrelas no Github.
Se você encontrou um bug ou criou algum recurso fantástico que pode tornar o Webcam Capture uma API melhor para usar, não hesite em criar um novo problema onde você possa descrever em detalhes qual é o problema ou o que você gostaria de melhorar.
Como o Webcam Capture usa parte do código nativo, é muito difícil cobrir todos os sistemas operacionais suportados. Estou sempre testando em Ubuntu Linux de 64 bits, Windows XP e Vista (ambos de 32 bits), mas não tenho possibilidade de testar em Raspberry Pi, Mac OS e Linux de 32 bits. Por favor, ajude e teste esses sistemas se tiver essa possibilidade.
Se você conhece Java ou C++, pode ajudar a desenvolver o Webcam Capture bifurcando o repositório e enviando solicitações pull. Visite este link se você não sabe como contribuir com códigos de outras pessoas no Github.
As pessoas expressaram o desejo de doar um pouco de dinheiro. Doar não trará nada de especial, a não ser uma sensação calorosa por dentro, e possivelmente me incentivará a produzir mais material disponível gratuitamente para o projeto de Captura de Webcam. Você pode doar via PayPal, basta clicar no botão doar disponível abaixo - ele o redirecionará para a página segura do PayPal, onde você poderá fornecer o valor da doação (não há valor mínimo).
O código abaixo irá capturar a imagem da sua webcam padrão e salvá-la no arquivo hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
Abaixo estão alguns exemplos básicos muito bonitos que demonstram como a API Webcam Capture pode ser usada no código Java. Tudo pode ser encontrado no código-fonte do projeto. Observe que alguns desses exemplos podem usar a API mais recente que ainda não foi lançada no maven Central. Nesse caso, certifique-se de usar o SNAPSHOT da API de captura de webcam mais recente.
WebcamPanel
WebcamPanel
WebcamImageTransformer
E aqui estão alguns exemplos mais avançados, poucos com GUI bastante sofisticada.
WebcamMotionDetector
com a janela JFrame
WebcamPanel.Painter
para desenhar efeitos no componente WebcamPanel
WebcamImageTransformer
para desenhar efeitos diretamente na imagem da câmeraSérie de vídeos do Genuine Coder para iniciantes em captura de webcam:
A API Webcam Capture define a interface WebcamDriver
que já foi implementada em diversos drivers de captura construídos sobre frameworks conhecidos usados para trabalhar com multimídia e câmeras. A lista completa pode ser encontrada abaixo.
Por padrão (se outro driver não for especificado), a biblioteca usa o driver padrão que consiste em uma parte pequena e refinada da incrível estrutura OpenIMAJ envolvida em um contêiner thread-safe. No entanto, existem drivers mais prontos para uso que podem ser usados como substitutos ou acréscimos ao padrão. Ao utilizar esses drivers, o Webcam Capture pode ser estendido com vários novos recursos (por exemplo, suporte para câmera IP).
A lista de drivers de captura adicionais inclui:
Nome do motorista | Estável | Central | Descrição |
---|---|---|---|
câmera ip | sim | sim | Driver para câmera IP/rede |
webcamfs | sim | sim | Driver para ferramenta CLI FSWebcam |
streamer | sim | sim | Driver para estrutura GStreamer |
abririmaj | sim | sim | Driver para estrutura OpenIMAJ |
v4l4j | sim | não | Driver para biblioteca V4L4j |
jmf | sim | sim | Driver para estruturas JMF/FMJ |
civil | sim | sim | Driver para biblioteca LTI-CIVIL |
vlcj | sim | sim | Driver para biblioteca vlcj |
javacv | sim | sim | Driver para biblioteca JavaCV |
ffmpeg-cli | poc | não | Driver para ferramenta CLI FFmpeg |
raspinha | poc | não | Driver para ferramenta Raspicam CLI PIcam |
Se nenhum outro driver for especificado, o driver padrão será usado. Ele consiste em uma parte pequena e refinada da incrível estrutura OpenIMAJ envolvida em um contêiner thread-safe.
Este driver de captura oferece a possibilidade de acessar dispositivos de câmera IP e manipular imagens na forma de imagens JPEG ou fluxos MJPEG.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new IpCamDriver ());
Mais detalhes e download de binários podem ser encontrados na página dedicada de webcam-capture-driver-ipcam.
Este driver de captura dá a possibilidade de usar uma ferramenta CLI chamada fswebcam
(escrita por Philip Heron) para acessar dispositivos UVC conectados ao computador. Funciona apenas em *nix e requer que a ferramenta seja instalada no ambiente onde o driver é usado.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new FsWebcamDriver ());
Mais detalhes sobre como usar, como instalar fswebcam
e onde os binários podem ser baixados podem ser encontrados na página dedicada do driver de captura de webcam-fswebcam.
Este driver de captura dá a possibilidade de usar o GStreamer para acessar dispositivos de câmera UVC conectados ao computador. Funciona apenas em Windows e Linux.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new GStreamerDriver ());
Mais detalhes sobre como usar, como instalar o GStreamer e onde os binários podem ser baixados podem ser encontrados na página dedicada do driver de captura de webcam-gstreamer.
Este driver de captura dá a possibilidade de usar OpenIMAJ para acessar dispositivos de câmera UVC conectados ao computador.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new OpenImajDriver ());
Mais detalhes sobre como usá-lo e onde os binários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-openimaj.
Este é um driver de captura que usa o projeto V4L4j para acessar dispositivos de câmera UVC. Funciona apenas no Linux e parece ser mais adequado para uso no Raspberry Pi.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new V4l4jDriver ());
Mais detalhes sobre como usá-lo e onde os binários necessários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-v4l4j.
Este é um driver de captura que usa JMF (Java Media Framework) para acessar dispositivos de webcam UVC. O JMF precisa ser instalado e configurado no PC antes que este driver possa ser usado. Também pode ser usado alternativamente com o projeto FMJ.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new JmfDriver ());
Mais detalhes sobre como usá-lo, instalar e, quando necessário, os binários podem ser baixados, podem ser encontrados na página dedicada do webcam-capture-driver-jmf.
Este é um driver de captura projetado para aproveitar os recursos do projeto LTI-CIVIL (da Larson Technologies Inc.) e usá-lo para acessar uma ampla variedade de dispositivos UVC. Funciona apenas em arquiteturas de 32 bits.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new LtiCivilDriver ());
Mais detalhes sobre como usá-lo e onde os binários necessários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-lti-civil.
Este é um driver de captura que usa a biblioteca VLCj da Caprica Software Limited para obter acesso ao dispositivo de câmera UVC.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new VlcjDriver ());
Mais detalhes sobre como usá-lo, como instalar e onde os binários necessários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-vlcj.
Este é um driver de captura que usa ligação JavaCV para OpenCV para obter acesso ao dispositivo de câmera UVC.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
ou se você estiver usando captura de webcam <0.3.12:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Se você visa apenas plataformas específicas, dê uma olhada em Redução do número de dependências.
Como usar:
Webcam . setDriver ( new JavaCvDriver ());
Mais detalhes sobre como usá-lo, como instalar e onde os binários necessários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-javacv.
Este é o driver de captura que usa a ferramenta CLI ffmpeg
do FFmpeg para acessar o dispositivo de câmera UVC.
Dependência do Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Como usar:
Webcam . setDriver ( new FFmpegCliDriver ());
Mais detalhes sobre como usá-lo, como instalar e onde os binários necessários podem ser baixados podem ser encontrados na página dedicada do webcam-capture-driver-ffmpeg-cli.
Inicialmente comecei a trabalhar no Webcam Capture como uma simples prova de conceito depois de ler o fantástico livro de Andrew Davison intitulado Killer Game Programming (que também está disponível online). Obrigado André! Mais tarde descobri que há uma bagunça completa nas APIs Java que permitem capturar imagens de webcams. Depois de escolher uma API específica, você não poderá alterá-la sem modificar grandes partes do código. Decidi mudar esta situação e escrever um wrapper de uso geral para várias APIs diferentes (como JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC). Desta forma, o Webcam Capture como o conhecemos hoje ganhou vida. Hoje você pode alterar as estruturas subjacentes apenas substituindo o driver da webcam (mudança de código de uma linha). Se não houver nenhum driver para uma estrutura específica, é muito fácil escrevê-la você mesmo.
Copyright (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) e colaboradores
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.