Jump to content
Sign in to follow this  
j_galdino

Capturar imagens da webcam a cada 1 segundo usando JavaCV

Recommended Posts

Estou trabalhando em um projeto em que a webcam padrão tira fotos a cada 1 segundo utilizando o JavaCV.

Por enquanto ,nesse code, ao clique do botão capturar ele captura uma foto e salva na pasta do programa. Pede-se que o programa salve as fotos em uma determinada pasta selecionada pelo usuário e que a webcam capture fotos a cada 1 segundo.

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import com.googlecode.javacv.cpp.opencv_highgui;
import com.googlecode.javacv.cpp.opencv_highgui.CvCapture;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;

OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);

JOptionPane.showMessageDialog(null, "Aperte a tecla P para parar a gravação");
while(KeyEvent.VK_P){

try{
grabber.start();

IplImage img = grabber.grab();

if(img!=null){
cvSaveImage("image1.jpg", img);
}
}
catch(Exception e){
e.printStackTrace();
}
setFocusable(true);
setVisible(true);

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By 4Unknow
      Boa tarde pessoal, como estão?
       
      Gostaria de uma ajudinha aqui. A forma mais prática e com um layout bacana, um pop-up toda vez(ou não) que o usuário abrir o site, um informativo que é importante.
      Tenho um site que vende algo muito específico e preciso deixar claro sobre meu produto como um informativo. Ou um banner/popup que abre quando o usuário entra no site para deixar claro.

      Ou um footer bonito que deixa claro essa informação.

      Se alguém tiver uma ideia ou puder ajudar, eu agradeceria.
    • By TeixeiraRamos
      Prezados, saúde e paz.
      Por favor, tenho muita vontade de aprender Java, mas estou tendo os seguintes problemas:
      Windows 10 - 64 bits
      Instalei o JDK 17, mas ao instalar o NetBeans 12.4 informa que não é compatível com essa versão do JDK.
      Então desinstalei e instalei o JDK 16.0.2 e voltei a instalar o NetBeans 12.4 e apareceu a seguinte mensagem no final "The specified installation folder is not empty."
      Nesta última etapa está:
      Install the Apache NetBeans IDE to:
      C:\Program Files\NetBeans-12.4
       
      JDK for the Apache NetBeans IDE:
      C:\Program Files\Java\jdk-16.0.2
      Adianto que antes de fazer a instalação do NetBeans fiz a alteração do PATCH e a Edicação das Variaveis do Sistema.
       
      Muito obrigado.
    • By CadencePro
      Faça o código de uma aplicação Web em PHP, que realize o cálculo do consumo de energia de equipamentos eletrônicos e eletrodomésticos de uma residência. O usuário deve entrar com o nome do aparelho, juntamente com o seu consumo em Watts/hora e a quantidade de horas que ele fica ligado por dia. O resultado do cálculo deve ser dado em Kw/H.
      Regras:
      - Você deve permitir que seja adicionado quantos aparelhos forem possíveis.
      - Deve-se calcular o consumo total da casa, e o consumo mensal de cada aparelho deve ser obtido em Kw/h, mesmo com que a entrada esteja em Watts/hora.
      - A aplicação deve gravar em um arquivo o nome de cada equipamento, juntamente com o consumo mensal dele em Kw/H.
    • By Defera172
      Sou novo na programação estou com dificuldade. Implementei uma lista duplamente encadeada preciso navegar pelos dados ordenados da lista por uma interface gráfica, tanto no sentido de próximo quanto anterior, só que não sei por começar para passar os dados na interface para permitir a navegabilidade, já tenho a interface gráfica pronta e a lista encadeada pronta, só não sei como posso fazer para passar os dados de forma ordenada para a interface. Coloquei todas as classes dos projeto se Alguém puder me ajudar a como prosseguir?
       
      Classe principal
       
      public class Filme { private String titulo; private String sinopse; private String produtora; private String atorPrincipal; private String estilo; private String caminhoDoArquivoDaCapa; private Filme antTitulo; private Filme antAtor; private Filme antEstilo; private Filme proxTitulo; private Filme proxAtor; private Filme proxEstilo; protected final static String SEPARADOR = ";"; public Filme(String titulo, String sinopse, String produtora, String atorPrincipal, String estilo, String caminhoDoArquivoDaCapa) { this.titulo = titulo; this.sinopse = sinopse; this.produtora = produtora; this.atorPrincipal = atorPrincipal; this.estilo = estilo; this.caminhoDoArquivoDaCapa = caminhoDoArquivoDaCapa; this.antTitulo = null; this.antAtor = null; this.antEstilo = null; this.proxTitulo = null; this.proxAtor = null; this.proxEstilo = null; } public Filme() { super(); } public void imprimeFilme() { System.out.println("Filme: " + titulo); } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getSinopse() { return sinopse; } public void setSinopse(String sinopse) { this.sinopse = sinopse; } public String getProdutora() { return produtora; } public void setProdutora(String produtora) { this.produtora = produtora; } public String getAtorPrincipal() { return atorPrincipal; } public void setAtorPrincipal(String atorPrincipal) { this.atorPrincipal = atorPrincipal; } public String getEstilo() { return estilo; } public void setEstilo(String estilo) { this.estilo = estilo; } public String getCaminhoDoArquivoDaCapa() { return caminhoDoArquivoDaCapa; } public void setCaminhoDoArquivoDaCapa(String caminhoDoArquivoDaCapa) { this.caminhoDoArquivoDaCapa = caminhoDoArquivoDaCapa; } public Filme getAntTitulo() { return antTitulo; } public void setAntTitulo(Filme antTitulo) { this.antTitulo = antTitulo; } public Filme getAntAtor() { return antAtor; } public void setAntAtor(Filme antAtor) { this.antAtor = antAtor; } public Filme getAntEstilo() { return antEstilo; } public void setAntEstilo(Filme antEstilo) { this.antEstilo = antEstilo; } public Filme getProxTitulo() { return proxTitulo; } public void setProxTitulo(Filme proxTitulo) { this.proxTitulo = proxTitulo; } public Filme getProxAtor() { return proxAtor; } public void setProxAtor(Filme proxAtor) { this.proxAtor = proxAtor; } public Filme getProxEstilo() { return proxEstilo; } public void setProxEstilo(Filme proxEstilo) { this.proxEstilo = proxEstilo; } } Lista Duplamente encadeada
      public class Filmoteca { private Filme primeiroTitulo; private Filme ultimoTitulo; public Filmoteca() { this.primeiroTitulo = null; this.ultimoTitulo = null; } public Boolean estaVazio() { return (primeiroTitulo == null); } public void insereOrdenadoPorTitulo(Filme filme) { Filme aux, anterior; if (estaVazio()) { // Checa se a lista está vazia. primeiroTitulo = ultimoTitulo = filme; // Primeiro e último. return; // Sai da rotina. } // Se continuou, a lista não está vazia. if (filme.getTitulo().compareTo(primeiroTitulo.getTitulo()) < 0) {// O novo filme, é o primeiro? filme.setProxTitulo(primeiroTitulo); primeiroTitulo.setAntTitulo(filme); primeiroTitulo = filme; return; // Sai da rotina. } // Se continuou é porque não é o único e nem o primeiro da lista. anterior = primeiroTitulo; for (aux = primeiroTitulo.getProxTitulo(); aux != null && filme.getTitulo().compareTo(aux.getTitulo()) > 0; aux = aux.getProxTitulo()) { anterior = aux; } // Encontrou a posição para inserir o novo filme. anterior.setProxTitulo(filme); filme.setAntTitulo(anterior); filme.setProxTitulo(aux); // Verifica seu o novo filme, é o último da lista. if (filme.getProxTitulo() == null) { ultimoTitulo = filme; // Sé é o último ajusta a referência ao último. } else { // Se não for o último aux deve apontar o novo filme como anterior. aux.setAntTitulo(filme); } } public String imprimeFilmesTitulo() { for (Filme qtsFilmes = primeiroTitulo; qtsFilmes != null; qtsFilmes = qtsFilmes.getProxTitulo()) { qtsFilmes.imprimeFilme(); } return null; } } Classe que seta os dados na lista encadeada
      public class ManipulaArquivo extends Filme { Filmoteca filmoteca = new Filmoteca(); public static File selecionarArquivo() { File arquivo = new File("Filmes.txt"); try { if (!arquivo.exists()) { arquivo.createNewFile(); } } catch (IOException e) { e.printStackTrace(); } return arquivo; } public String Salvar() { try { FileWriter fw = new FileWriter(selecionarArquivo(), true); PrintWriter pw = new PrintWriter(fw); pw.println(this.getTitulo() + SEPARADOR + this.getEstilo() + SEPARADOR + this.getAtorPrincipal() + SEPARADOR + this.getProdutora() + SEPARADOR + this.getSinopse() + SEPARADOR + this.getCaminhoDoArquivoDaCapa()); pw.flush(); pw.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } return "Salvo com sucesso"; } public String RecuperaPorTitulo() { try { FileReader fr = new FileReader(selecionarArquivo()); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { final String[] campos = line.split(SEPARADOR); final Filme filme = new Filme(campos[0], campos[1], campos[2], campos[3], campos[4], campos[5]); filmoteca.insereOrdenadoPorTitulo(filme); } fr.close(); br.close(); } catch (IOException e) { } return filmoteca.imprimeFilmesTitulo(); } } Algoritmo da interface gráfica
      import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.UIManager; import br.com.geral.Filme; public class VisualizarFilme { JFrame frmFilmoteca; private static JTextField textFieldTitulo; private static JTextField textFieldEstilo; private static JTextField textFieldAtor; private static JTextField textFieldProdutora; private static JTextField textFieldSinopse; private final ButtonGroup buttonGroup = new ButtonGroup(); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { VisualizarFilme window = new VisualizarFilme(); window.frmFilmoteca.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public VisualizarFilme() { initialize(); } private void initialize() { frmFilmoteca = new JFrame(); frmFilmoteca.getContentPane().setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.setTitle("FILMOTECA"); frmFilmoteca.setBounds(100, 100, 755, 387); frmFilmoteca.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmFilmoteca.getContentPane().setLayout(null); JLabel lblTitulo = new JLabel("T\u00EDtulo"); lblTitulo.setBounds(251, 18, 56, 14); lblTitulo.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(lblTitulo); JLabel lblEstilo = new JLabel("Estilo"); lblEstilo.setBounds(258, 56, 49, 14); lblEstilo.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(lblEstilo); JLabel lblAtorPrincipal = new JLabel("Ator Principal"); lblAtorPrincipal.setBounds(200, 100, 107, 14); lblAtorPrincipal.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(lblAtorPrincipal); JLabel lblProdutora = new JLabel("Produtora"); lblProdutora.setBounds(222, 144, 85, 14); lblProdutora.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(lblProdutora); JLabel lblSinopse = new JLabel("Sinopse"); lblSinopse.setFont(new Font("Arial", Font.PLAIN, 18)); lblSinopse.setBounds(241, 188, 66, 14); frmFilmoteca.getContentPane().add(lblSinopse); textFieldTitulo = new JTextField(); textFieldTitulo.setBorder(UIManager.getBorder("CheckBox.border")); textFieldTitulo.setBounds(317, 14, 412, 26); frmFilmoteca.getContentPane().add(textFieldTitulo); textFieldTitulo.setColumns(10); textFieldEstilo = new JTextField(); textFieldEstilo.setBorder(UIManager.getBorder("CheckBox.border")); textFieldEstilo.setColumns(10); textFieldEstilo.setBounds(317, 52, 412, 26); frmFilmoteca.getContentPane().add(textFieldEstilo); textFieldAtor = new JTextField(); textFieldAtor.setBorder(UIManager.getBorder("CheckBox.border")); textFieldAtor.setColumns(10); textFieldAtor.setBounds(317, 96, 412, 26); frmFilmoteca.getContentPane().add(textFieldAtor); textFieldProdutora = new JTextField(); textFieldProdutora.setBorder(UIManager.getBorder("CheckBox.border")); textFieldProdutora.setColumns(10); textFieldProdutora.setBounds(317, 140, 412, 26); frmFilmoteca.getContentPane().add(textFieldProdutora); textFieldSinopse = new JTextField(); textFieldSinopse.setBorder(UIManager.getBorder("CheckBox.border")); textFieldSinopse.setColumns(10); textFieldSinopse.setBounds(317, 184, 412, 54); frmFilmoteca.getContentPane().add(textFieldSinopse); JLabel Imagem = new JLabel(""); Imagem.setBorder(UIManager.getBorder("CheckBox.border")); Imagem.setBounds(10, 14, 174, 224); frmFilmoteca.getContentPane().add(Imagem); JButton ButtonNovo = new JButton("Novo"); ButtonNovo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RegistrarFilme registrarFilme = new RegistrarFilme(); registrarFilme.GravarFilme.setVisible(true); frmFilmoteca.setVisible(false); } }); ButtonNovo.setBounds(377, 288, 107, 34); ButtonNovo.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(ButtonNovo); JButton ButtonExclusão = new JButton("Exclus\u00E3o"); ButtonExclusão.setBounds(234, 288, 107, 34); ButtonExclusão.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(ButtonExclusão); JButton ButtonProximo = new JButton("Pr\u00F3ximo"); ButtonProximo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // if (bntPorTitulo.isSelected()) { // // } // // else if (bntPorAtorPrincipal.isSelected()) { // // } // // else if (bntPorEstilo.isSelected()) { // // } } }); ButtonProximo.setBounds(518, 288, 107, 34); ButtonProximo.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(ButtonProximo); JButton ButtonAnterior = new JButton("Anterior"); ButtonAnterior.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // if (bntPorTitulo.isSelected()) { // // } // // else if (bntPorAtorPrincipal.isSelected()) { // // } // // else if (bntPorEstilo.isSelected()) { // // } } }); ButtonAnterior.setBounds(92, 288, 107, 34); ButtonAnterior.setFont(new Font("Arial", Font.PLAIN, 18)); frmFilmoteca.getContentPane().add(ButtonAnterior); JLabel lblNavegação = new JLabel("Navega\u00E7\u00E3o"); lblNavegação.setFont(new Font("Arial", Font.PLAIN, 18)); lblNavegação.setBounds(114, 256, 93, 19); frmFilmoteca.getContentPane().add(lblNavegação); JRadioButton bntPorTitulo = new JRadioButton("Por t\u00EDtulo"); buttonGroup.add(bntPorTitulo); bntPorTitulo.setFont(new Font("Arial", Font.PLAIN, 18)); bntPorTitulo.setBounds(223, 250, 99, 31); frmFilmoteca.getContentPane().add(bntPorTitulo); JRadioButton bntPorAtorPrincipal = new JRadioButton("Por ator principal"); buttonGroup.add(bntPorAtorPrincipal); bntPorAtorPrincipal.setFont(new Font("Arial", Font.PLAIN, 18)); bntPorAtorPrincipal.setBounds(332, 250, 161, 31); frmFilmoteca.getContentPane().add(bntPorAtorPrincipal); JRadioButton bntPorEstilo = new JRadioButton("Por estilo"); buttonGroup.add(bntPorEstilo); bntPorEstilo.setFont(new Font("Arial", Font.PLAIN, 18)); bntPorEstilo.setBounds(501, 250, 101, 31); frmFilmoteca.getContentPane().add(bntPorEstilo); } public void SetarCampos() { Filme filme = new Filme(); textFieldTitulo.setText(filme.getTitulo()); textFieldEstilo.setText(filme.getEstilo()); textFieldAtor.setText(filme.getAtorPrincipal()); textFieldProdutora.setText(filme.getProdutora()); textFieldSinopse.setText(filme.getSinopse()); } }  
    • By Hacker_Buiu
      Tem alguma área no fórum dedicada ao Linux e um subfórum para programação no mesmo?
       
      Observação:Preciso de uma área dessas para divulgar meu trabalho e ser reconhecido por muitos,tenho vídeo aulas de Linux,programas feitos para Linux no formato .deb,.rpm e .txz(Slackware),e ainda dicas e artigos do mesmo assunto.
       
      Hacker_Buiu é só meu nick,lembrando que existe hacker do bem e hacker do mal,mas não me considero um hacker,apesar de ser apaixonado por Linux,programação e tecnologia.
       
      Preciso de uma área assim:
       
      Fórum:Linux
      Subfórum:Lazarus,Gambas e NetBeans,Explicação:Lazarus(Delphi 7 para Linux),Gambas(Visual Basic do Linux),NetBeans para programar em Java e as vezes com C/C++ via plugin.
      Subfórum:Vídeo aulas de Linux(Instalação de programas,de jogos e vídeo aulas de programação etc...).
       
      Moderadores e Administradores quero muito essas áreas para contribuir para o fórum,meu desejo de contribuição para o fórum é imenso.Desejo muito demonstrar meu trabalho e ser reconhecido e tenho a ideia criada por mim que um fórum é uma casa por exemplo:
       
      Moderadores e Administradores:Se a casa é bonita e organizada terá mais visitantes(Amigos ou vizinhos),no caso do fórum é uma casa também e se o fórum já é bonito só falta organizar mais essas áreas para ter mais visitantes(Amigos(Parceiros) ou usuários visitando o mesmo),o que acham da ideia que criei?
       
      Eu imploro aos administradores e moderadores,por favor criem essa área de Linux para que eu possa contribuir nessa área,assim como os outros,e também deixar o fórum mais organizado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.