elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Manejar WebCam o camaraWeb desde JAVA
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Manejar WebCam o camaraWeb desde JAVA  (Leído 41,868 veces)
cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Manejar WebCam o camaraWeb desde JAVA
« en: 15 Mayo 2010, 20:32 pm »

Hola amigos, veran e buscado mucho al respecto y se que se puede hacer con JMF (Java Media Framework) pero no e podido encontrar ejemplos de como hacerlo, las instrucciones que se dan se me hacen muy confusas ya que son pasa manejar aspectos de la camara mas elavorados. pero yo lo unico que quiero es poder ver la camara desde java!!!!

miren aqui esta una de las paginas que le comento, http://www.google.com.mx/imgres?imgurl=http://cmop17.files.wordpress.com/2010/01/snag-0000.png&imgrefurl=http://cmop17.wordpress.com/2010/01/14/&usg=__4c2Xe_PJ3zHynQfT3e07bK2MrA4=&h=631&w=521&sz=256&hl=es&start=1&um=1&itbs=1&tbnid=AiPAP_vE_OvEMM:&tbnh=137&tbnw=113&prev=/images%3Fq%3Dwebcam%2Bdesde%2Bjava%2Bjmf%26um%3D1%26hl%3Des%26safe%3Doff%26sa%3DN%26tbs%3Disch:1 pero yo apenas comienzo a saber que es JMF y eso me revuelve

Alguien tiene un ejemplo sencillo pero funcional de como hacerlo!!! les agradecere mucho su ayuda!!!


De anetamo gracias  ;-)


En línea






biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #1 en: 15 Mayo 2010, 21:24 pm »

Has probado este code?
http://forums.sun.com/thread.jspa?threadID=247253


En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #2 en: 15 Mayo 2010, 21:51 pm »

Sip ya lo havia provado pero me manda 3 errores
Citar
--------------------Configuration: <Default>--------------------
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:151: warning: com.sun.image.codec.jpeg.JPEGImageEncoder is Sun proprietary API and may be removed in a future release
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    ^
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:151: warning: com.sun.image.codec.jpeg.JPEGCodec is Sun proprietary API and may be removed in a future release
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                               ^
C:\Users\Los_flais\Desktop\Camara\SwingCapture.java:152: warning: com.sun.image.codec.jpeg.JPEGEncodeParam is Sun proprietary API and may be removed in a future release
    JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
    ^
3 warnings

Process completed.

me manda un error en los codecs o algo asi pero como lo puedo corregir :S
En línea






cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #3 en: 15 Mayo 2010, 23:13 pm »

Listoooo ya pude.....eaea uff mi cabezita tuve k entenderle mazo al temaaaa  :rolleyes: y buscar muchos codigos relacionados para armar uno pequeño y simple...

Código:
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.swing.*;
import java.awt.Component;

public class SwingCapture {
public static void main(String[] args) {
// TODO Auto-generated method stu
otro perro=new otro();
perro.show();
perro.proceso();
}
}
class otro extends JFrame{
JLabel Imagen;
otro(){
Imagen=new JLabel();
Imagen.setBounds(30,40,20,20);
add(Imagen);
setBounds(400,400,400,400);
setLayout( null ); // use a BorderLayou
setTitle("Prueba de Camara Web");
}
public void proceso(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
MediaLocator ml = new MediaLocator("vfw://0");
Player p = Manager.createRealizedPlayer(ml);

Component video = p.getVisualComponent();

video.setBounds(20,30,600,600);
if ( video != null ){
// agragar el video al componente
                add( video);
}
               

p.start();
}catch(Exception e){
e.printStackTrace();
}
}
}



Saludosssss
En línea






josco

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #4 en: 16 Mayo 2010, 05:17 am »

me parece muy interesante tu proyecto, yo estoy haciendo una biblioteca y me gustaria tomar fotos de usuarios desde la camara web de mi lap, podrias subir tu proyecto para echarle un vistaso??? ;D ;D ;D
En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #5 en: 16 Mayo 2010, 22:46 pm »

Eaea. que honda amigos pues ya me aplique y cree una api por decirlo asi muy sencilla de usar :P funciona asi:

Citar
Leame.txt
VIVA atlacomulco

Para poder hacer uso de la api CamaraWeb necesitas tener instalado JMF y tener los .jar en la ruta \Java\jdk1.6.0_17\jre\lib\ext para poder usarlo desde Jcreator o cualquir otro IDE.

Los Metodos dentro son

public Component VerCamara(int x,int y,int alto,int ancho){
Los parametros de este metodo son para colocar el componente resultante en un Jframe


public int Fotografiar(String Carpeta,Boolean NombreAutomatico,String NombreValoNull){
Los parametros son:
   Carpeta: Carpeta donde se crearan las imagenes si no existe la crea si existe la respeta
   NombreAutomatico: false si no quieres colocar un nombre automatico
           true si quieres un nombre automatico(dia-Hora)

   NombreValoroNull: Nombre de la imagen SIN extensión en el caso que se aya dado false en el parametro anterior, de lo contrar         se rellena con null


El codigo de la api es el siguiente
Código:
//Paquetes para guardar imagen (Es necesario tener las apis _JMF_)
//By: CyberServer crow_15@hotmail.com
import javax.swing.*;
import java.awt.*;
import java.awt.Component;
import java.util.Date;
import javax.media.*;
import javax.media.control.*;
import javax.media.util.*;
import javax.media.format.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.RenderedImage;


class CamaraWeb{
public Component componente=null;
public Player p=null;
public Component video;
public MediaLocator ml;
CamaraWeb(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
ml = new MediaLocator("vfw://0");
p = Manager.createRealizedPlayer(ml);
video = p.getVisualComponent();
p.start();
    if ( video != null ){
              componente=video;
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error de Comunicacion con la WebCam " + e);
}
}
public Component VerCamara(int x,int y,int alto,int ancho){
this.componente.setBounds(x,y,alto,ancho);
return componente;
}

public int Fotografiar(String Carpeta,Boolean NombreAutomatico,String NombreValoNull){
Buffer buf=null;
Image img=null;
File imagenArch;
String nombre=null;
String formato = null;
Date HoraDate;
String HoraString=null;
File CarpetaFotografias;


CarpetaFotografias=new File(Carpeta);
if(CarpetaFotografias.exists()==false){
CarpetaFotografias.mkdir();
}
FrameGrabbingControl fgc = (FrameGrabbingControl)
     p.getControl("javax.media.control.FrameGrabbingControl");
     buf = fgc.grabFrame();
     BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
     img = btoi.createImage(buf);
     if (img != null){
     if(NombreAutomatico==true){
     HoraDate=new Date();
     HoraString=Integer.toString(HoraDate.getDate())+"-"+Integer.toString(HoraDate.getMonth())+"-"+Integer.toString(HoraDate.getYear())+
     "-"+Integer.toString(HoraDate.getHours())+"-"+Integer.toString(HoraDate.getMinutes())+"-"+HoraDate.getSeconds();
     nombre=Carpeta + "\\"+HoraString+".jpg";
     }else{
     nombre=Carpeta + "\\"+NombreValoNull+".jpg";
     }
    
     imagenArch = new File(nombre);
         formato = "JPEG";
try{
ImageIO.write((RenderedImage) img,formato,imagenArch);
return 1;
         }catch (IOException ioe){
         return 0;
         }
         }
         return 0;
}
}

Y si no quieres saber de codigo y solo usar el api que tiene que estar adjunto a tu proyecto ya que es un .class aqui descargalo...

http://cybercerver.webcindario.com/APICamara%20Web.zip

Saludos y viva Atlacomulco:P atte: CyberServer
En línea






josco

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #6 en: 17 Mayo 2010, 02:53 am »

hola cyberserver, entonces como puedo hacer para que se vea la cam en un frame, mira uso netbeans, cree un nuevo proyecto agregue tu clase y un jframe puse un boton y en el codigo le puse:


Código:
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        ver.VerCamara(200,200,200,200);
   
    }                 

cuando corro el programa le doy al boton y prende la camara, pero que tengo que hacer para que me muestre lo que esta viedno la camara??

me sale el error:  java.io.IOException: Could not connect to capture device
En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #7 en: 17 Mayo 2010, 04:15 am »

 ;D ;D ;D Bien Facil men mira.

Esta es la firma del metodo para ver la camara...
Código:
public Component VerCamara(int x,int y,int alto,int ancho){

Si ves nos retorna un valor tipo Component..... esto quiere decir que nos retorna un objeto asi como si fuera un Jcommand, un JText etc ;D

lo que tendriamos que hacer es agregarlo al Jframe o Jpanel como si fuera otro objeto.
entonces el codigo para agregar el componente es:

Código:
JFrame.setlayout(null);
JFrame.add(VerCamara(int x,int y,int alto,int ancho));

Claro no esperes que te agregue el panel completo para modificar aspectos visuales, solo te va a agregar el componente de la CamaraWeb y tu ya con las cordenadas que le des pues puedes colocarlo en un lugar para que se vea padre. mira aqui esta el mio con el unico uso de mi clase.

:P espero que te aya servido y cualquier duda hasme saber atte: CyberServer






« Última modificación: 17 Mayo 2010, 04:32 am por cyberserver » En línea






josco

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #8 en: 17 Mayo 2010, 19:49 pm »

que tal cyberserver, ahora si ya pude hacer que se muestre la camara en un jtext  ;D ;D ;D pero ahora quisiera tomar una foto, ya lo intente pero me sale un error   :-( :-( :-( :-( mira te explico lo que hago:

en un jframe agregue un jtext y dos botones, a un boton le agregue la funcion para que me muestre la camara en el jtext asi:

Código:
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
    }                                       

y al otro boton, segun yo le puse el siguiente codigo para que tomara la foto:

Código:
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb guardar = new CamaraWeb();
        guardar.Fotografiar("fotosjava", true, "imagen1");
       

    }         

pero al darle a este boton me sale este error:

Código:
 error de comunicacion con la webcam javax.media.noplayerexception: error instantiating class: com.sun.media.protocol.vfw.datasource: java.io.IOexception: capture device in use

ahora la pregunta es, como le hago para tomar una foto y guardarla.

gracias por tu ayuda saludosss  ;-) ;-) ;-)

En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Manejar WebCam o camaraWeb desde JAVA
« Respuesta #9 en: 17 Mayo 2010, 23:20 pm »

 ;D ;D facil, mira para entender este error tenemos que ir al codigo en esta parte.

Código:
CamaraWeb(){
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
try{
ml = new MediaLocator("vfw://0");
p = Manager.createRealizedPlayer(ml);
video = p.getVisualComponent();
p.start();
    if ( video != null ){
               componente=video;
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error de Comunicacion con la WebCam " + e);
}
}


Si nos damos cuenta es un contructor.

Contructor segun wikipedia:
Citar
En java es un método especial dentro de una clase, que se llama automáticamente cada vez que se crea un objeto de esa clase.

Posee el mismo nombre de la clase a la cual pertenece y no puede regresar ningún valor (ni siquiera se puede especificar la palabra reservada void). Por ejemplo si añadiéramos a la clase SSuma un constructor, tendríamos que llamarlo también SSuma. Cuando en una clase no se escribe propiamente un constructor, java asume uno por defecto.
Constructor por defecto [editar]

Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null).

Esto quiere decir que en este se definen e inacializan las variables y metodos que vamos a utilizar a lo largo de  la clase.

En nuestro caso dentro de nuestro constructor CamaraWeb() se inicializa la conexión de la CamaraWeb para con el metodo de VerCamara() se proyecte en un componente.

Entonces ese error aparece por que estas instanciando 2 veces la Clase "CamaraWeb" y en la segunda ves estas tratando de cargar  la camaraweb cuando esta ya esta cargada, es por eso que el error te dice;
Citar
capture device in use


La solucion seria mandar a llamar VerCamara() y Fotografias() en la misma clase.!!! :P y instanciando una sola ves!!!!!! :P

NOTA: con relacio a tu codigo creo que estas tratando de matar moscas a cañonazos en cuestion de los eventos de los botones mira

Tu codigo:
Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb ver = new CamaraWeb();
        this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
    }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        CamaraWeb guardar = new CamaraWeb();
        guardar.Fotografiar("fotosjava", true, "imagen1");
       

    }

Cuando podrias sintetisarlo asi:

Código:
clase ejemplo implements ActionListener{

public CamaraWeb ver;
ver = new CamaraWeb();


public void actionPerformed(ActionEvent e){
 
  if(e.getSource()==jButton1){
  this.jLabel1.setLayout(null);
        this.jLabel1.add(ver.VerCamara(0, 0, 140, 180));
  }
if(e.getSource()==jButton2){
                int resultado;
  resultado=ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==1){
                    //Se tomo la fotografia
                }else{
                   //Error en la fotografia
               }
  }
 }

}


y asi ya utilizas los dos metodos de la clase CamaraWeb instanciadola una sola ves

Saludos y espero que aya sido claro... saludos atte: CyberServer

En línea






Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manejar archivo .txt desde java (ingresar datos, modificar datos, buscar datos y
Java
chuystoty 9 105,680 Último mensaje 20 Mayo 2012, 06:13 am
por ELMED
Manejar webcam en VS 2010
.NET (C#, VB.NET, ASP)
eldiegofg 4 5,575 Último mensaje 8 Junio 2010, 05:21 am
por 43H4FH44H45H4CH49H56H45H
Manejar plc con java?
Java
josco 3 6,530 Último mensaje 18 Noviembre 2010, 20:50 pm
por josco
Manejar SMF desde Java
Java
undercode2 1 2,520 Último mensaje 30 Julio 2011, 03:11 am
por Leyer
Camaraweb java
Java
mything 1 1,676 Último mensaje 13 Junio 2014, 09:23 am
por adastra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines