Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RafaelNilton

Capturar Imagem Webcam e Salvar a cada 1 segundo.

Recommended Posts

Olá, estou com uma dúvida em meu projeto.

Seguinte,

tenho uma Webcam que ao detectar um movimento pelo sensor, vai pedir para registrar ( tirar uma foto e salvar no diretorio ).

Isso a cada segundo tirar uma foto, se tiver detectando o movimento. quando não tiver o movimento ela irá pausar.

seguinte eu fiz a ação em um botão: segue abaixo o código que estou tentado:

Image i = video.capturarImagen2();
       FrameFotos frameFotos;
       try {
           frameFotos = new FrameFotos(new ImageIcon(i));
            frameFotos.setLocationRelativeTo(null);
       } catch (IOException ex) {
           Logger.getLogger(FrameInicial.class.getName()).log(Level.SEVERE, null, ex);
       }



           int r = 0;

           try {
           ImageIO.write((RenderedImage) i, "jpg", new File("C:/" + r + ".jpg"));
               r++;
               new Thread().sleep(1);
           } catch (Exception e) {
               JOptionPane.showMessageDialog(null, "Nao foi possivel capturar a imagem!", "Erro", JOptionPane.ERROR_MESSAGE);
           }

 

a ação de capturar a imagem está sendo guardada na variavel i.

 

Seguinte, nesse código está gravando apenas uma imagem. quando clico no botao outra vez armazena outra.

 

Alguém poderia me ajudar?

Agradeço desde já.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Rafael.

 

Está gravando apenas uma única imagem simplesmente porque voce programou assim para gravar, ou seja, o código de gravação teria que estar dentro de um looping "while". Entretanto, você deve tomar o cuidado também de implementação algo que faça voce parar esse loopinp de gravação, e uma das maneiras que você pode fazer isso é implementar um evento de teclado da classe do seu Frame onde está declarada esta gravação, onde digitanto a tecla "p" ou "P" voce para o looping e digitar "i" ou "I" para reiniciar.

 

Para isto vamos implementar o evento de teclado que vai ser declarado dentro do construtor da classe, assim:

 

	addKeyListener(new KeyAdapter(){
           @Override
    		public void keyPressed(KeyEvent e) {
                 if (e.getKeyChar()=='P' || e.getKeyChar()=='p'){
                     executeRecord(false);  
                 } else if (e.getKeyChar()=='I' || e.getKeyChar()=='i') {
                     executeRecord(true);
                 }
           }
     });

 

Agora vamos colocar o seu código dentro de um looping e depois dentro do método executeRecord, assim:

 

	public void execteRecord(boolean exec) {
         Image i = video.capturarImagen2();
         try {
               FrameFotos frameFotos = new FrameFotos(new ImageIcon(i));
               frameFotos.setLocationRelativeTo(null);
               int r = 0;
               // Colocado o código de gravação dentro do looping
               while (exec) {
                       ImageIO.write((RenderedImage) i, "jpg", new File("C:/" + r + ".jpg"));
                       r++;
                       new Thread().sleep(1);
               }
         } catch (IOException ex) {
              	Logger.getLogger(FrameInicial.class.getName()).log(Level.SEVERE, null, ex);
         } catch (IOException ex) {
              	JOptionPane.showMessageDialog(null,"Não foi possível capturar a imagem !", JOptionPane.ERROR_MESSAGE);
         [color="#660066"][size=2]}[/size][/color]
   }

 

Tente ai e vê se dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.