Problemas em tirar foto com a WebCam

2 respostas
R

Opa galera…

Seguinte… estou tentando tirar uma foto com a webCam e abri-la em um novo JFrame…
A função que inicializa o Player para a câmera é a seguinte…

private void inicializa(){
		if( camera != null ){
			try {
				player = Manager.createRealizedPlayer( camera.getLocator() );
				if( player != null ){
					player.start();
					formatControl = (FormatControl)player.getControl ( "javax.media.control.FormatControl" );
					imageSize = ((VideoFormat)formatControl.getFormat()).getSize();
				}else{
					System.err.println("DETECTOR DE MOVIMENTO - Null player.");
				}
			} catch (NoPlayerException npE) {
				System.err.println("DETECTOR DE MOVIMENTO - Não foi possível criar o player.");
				System.out.println(npE);
			} catch (CannotRealizeException crE) {
				System.err.println("DETECTOR DE MOVIMENTO - Não foi possível realizar o player.");
				System.out.println(crE);
			} catch (IOException ioE) {
				System.err.println("DETECTOR DE MOVIMENTO - Erro ao conectar com a câmera.");
				System.out.println(ioE);
			}
		}else{
			System.out.println("DETECTOR DE MOVIMENTO - Nenhuma câmera definida para detecção de movimento.");
		}
	}

A seguinte função é utilizada para recuperar o Buffer para a câmera, para que a foto possa ser tirada…

private Buffer getFrameBuffer( ){
        if ( player != null ){
            FrameGrabbingControl fgc = (FrameGrabbingControl)player.getControl ( "javax.media.control.FrameGrabbingControl" );
            if ( fgc != null ){
                return ( fgc.grabFrame() );
            }else{
                System.err.println ("DETECTOR DE MOVIMENTO - FrameGrabbingControl is null");
                return ( null );
            }
        }else{
            System.err.println ("DETECTOR DE MOVIMENTO - Player is null");
            return ( null );
        }
    }

As duas funções acima aparentam executar sem erro… aparentam…
A próxima função é a que realmente tira a foto…

private Image getScreenShot() {
		Buffer buffer = getFrameBuffer();
        if ( buffer != null ){
            //Converte o buffer para uma imagem
            BufferToImage btoi = new BufferToImage ( (VideoFormat)buffer.getFormat() );
            if ( btoi != null ){
                Image image = btoi.createImage ( buffer );
                if ( image != null ){
                    return ( image );
                }else{
                    System.err.println ("DETECTOR DE MOVIMENTO - BufferToImage não pode converter o buffer.");
                    return ( null );
                }
            }else{
                System.err.println ("DETECTOR DE MOVIMENTO - Não foi possível criar uma instância de BufferToImage.");
                return ( null );
            }
        }else{
            System.err.println ("DETECTOR DE MOVIMENTO - Buffer nulo.");
            return ( null );
        }
	}

Quando a função acima é executada o sistema imprime a mensagem…

DETECTOR DE MOVIMENTO - BufferToImage não pode converter o buffer.

Portanto a linha Image image = btoi.createImage ( buffer ) está retornando null…

Estas duas ultimas funções ( De resgatar o buffer e tirar a foto ) eu copiei de um tutorial que eu axei na net e tal…

Tem alguma coisa errada com o código ?
As duas ultimas funções eu tenho praticamente certeza que estão corretas pois o sistema do tutorial está funcionando…

Existe alguma coisa a mais que eu deva fazer na função inicializa() para poder tirar a foto ?

Aguardo respostas…

Obrigado.

2 Respostas

L

oi rKt, primeiramente obrigado, nunca tinha mexido com jmf, gracas ao seu topico eu fiquei com curiosidade e mexi :stuck_out_tongue:

eu na verdade usei seu codigo (quase igual), e consegui tirar a screen normal, se eu mando executar direto, ele da erro na hora de pegar o buffer porque (imago eu) ainda naum teve tempo de inicializar totalmente a cam (pelo menos as luzinhas da minha cam ainda estao acendendo e apagando, iniciando)… mas se executo com debug (dou tempo de iniciar normal), ele tira a screen normal.

Ve se naum eh um problema desse tipo.

Valeu!

R

Hummm certeza… vou ver sim…
Qualquer coisa eu posto aqui denovo…

Eu também nunca tinha usado JMF, mais no meu projeto final estou tendo que usar… =P

Criado 20 de agosto de 2006
Ultima resposta 20 de ago. de 2006
Respostas 2
Participantes 2