Autor
|
Tema: Manejar WebCam o camaraWeb desde JAVA (Leído 42,424 veces)
|
|
biribau
Desconectado
Mensajes: 181
|
|
|
|
En línea
|
|
|
|
cyberserver
Desconectado
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
Sip ya lo havia provado pero me manda 3 errores --------------------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
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
Listoooo ya pude.....eaea uff mi cabezita tuve k entenderle mazo al temaaaa y buscar muchos codigos relacionados para armar uno pequeño y simple... 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
|
|
|
|
|
cyberserver
Desconectado
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
Eaea. que honda amigos pues ya me aplique y cree una api por decirlo asi muy sencilla de usar funciona asi: 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 //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.zipSaludos y viva Atlacomulco:P atte: CyberServer
|
|
|
En línea
|
|
|
|
josco
Desconectado
Mensajes: 199
|
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: 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
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
Bien Facil men mira. Esta es la firma del metodo para ver la camara... 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 lo que tendriamos que hacer es agregarlo al Jframe o Jpanel como si fuera otro objeto. entonces el codigo para agregar el componente es: 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. 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
Mensajes: 199
|
que tal cyberserver, ahora si ya pude hacer que se muestre la camara en un jtext 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: 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: 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: 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
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
facil, mira para entender este error tenemos que ir al codigo en esta parte. 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: 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; capture device in use La solucion seria mandar a llamar VerCamara() y Fotografias() en la misma clase.!!! y instanciando una sola ves!!!!!! 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: 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: 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Manejar archivo .txt desde java (ingresar datos, modificar datos, buscar datos y
Java
|
chuystoty
|
9
|
106,341
|
20 Mayo 2012, 06:13 am
por ELMED
|
|
|
Manejar webcam en VS 2010
.NET (C#, VB.NET, ASP)
|
eldiegofg
|
4
|
5,787
|
8 Junio 2010, 05:21 am
por 43H4FH44H45H4CH49H56H45H
|
|
|
Manejar plc con java?
Java
|
josco
|
3
|
6,678
|
18 Noviembre 2010, 20:50 pm
por josco
|
|
|
Manejar SMF desde Java
Java
|
undercode2
|
1
|
2,643
|
30 Julio 2011, 03:11 am
por Leyer
|
|
|
Camaraweb java
Java
|
mything
|
1
|
1,779
|
13 Junio 2014, 09:23 am
por adastra
|
|