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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15
71  Programación / Java / Reconocimiento de Patrones en JAVA en: 29 Mayo 2010, 21:41 pm
 :DHola amigos, para todos aquellos que quieran comerce el mundo y como gran sueño como yo tengan en ser investigadores algun dia!

Aqui les traigo un programa super basico de Reconocimiento de patrones en una imagen. lo cree por conviccion y por querer saber como funciona esto.!!!

Pero para que puedo ocupar este programa?:
La pregunta me la han hecho muchas personas y la respuesta es ilimitada! la pregunta seria donde no puedo ocuparla :P

Un ejemplo es en la inteligencia artificial supongamos que creamos un robor que aprender a distinguir en una mesa llena de fruta una manzana. como sabes o como hacele entender al robot k es una manzana y que es diferente a las demas.!!

con este programa de reconocimiento de patrones. esto es muy basico pero abre la puerta a grandes investigaciones k se estan asiendo sobre esto.


Comenzemos.
Primero que nada nuestro proyecto solo reconoce patrones en imagenes .png esto es por el formato y el tipo de imagen de mapa de bits que no cambiar su estructura cuando cambiamos su tamaño o modificamos un pixel, ya que la mayoría de las otras extensiones al cambiar un pixel cambiar todo lo demas :P


Este es el codigo sencillo y pequeño

Código
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.image.BufferedImage;
  4. import javax.swing.ImageIcon;
  5. import java.io.*;
  6. import javax.imageio.ImageIO;
  7.  
  8. //Autor Jose abel de la Fuente Arriaga
  9. //CyberServer
  10.  
  11. public class Pixeles {
  12. public static void main (String[] args) {
  13. JLabel Resultado= new JLabel();
  14.  
  15. JOptionPane.showMessageDialog(null,"Proyecto: Reconocimiento de Patrones en imagenes \n"+
  16. "Autor: Jose Abel de la fuente \n" +
  17. "Correo: crow_15@hotmail.com \n" +
  18. "Lenguaje: Java \n"+
  19. "Arriva atlacomulco, atte: cyberServer");
  20.  
  21. String PixelBuscar=JOptionPane.showInputDialog("Color en Hexadecimal del pixel a Buscar \n El Default es Blanco - ffffff","ffffff");
  22. String Archivo=JOptionPane.showInputDialog("Nombre de la imagen para Buscar el pixel \n Tiene que se png");
  23. int contador=0;
  24. String Cordenadas=null;
  25. ImageIcon Imagen = new ImageIcon(Archivo + ".png");
  26.  
  27. Coversion C = new Coversion();
  28. BufferedImage Nueva = C.toBufferedImage(Imagen.getImage());
  29. Graphics g = Nueva.getGraphics();
  30.  
  31. for(int x=0;x<=449;x++){
  32. for(int y=0;y<=331;y++){
  33. String val= Integer.toHexString(Nueva.getRGB(x,y) & 0x00ffffff ).toString();
  34. if(val.equals(PixelBuscar)){
  35. Cordenadas=Cordenadas + " (" + x+","+y+") ";
  36. contador++;
  37. g.setColor(Color.yellow);
  38. g.fillOval(x, y, 10, 10);
  39. }
  40. }
  41. }
  42.  
  43. //JOptionPane.showMessageDialog(null,"Tiene " + contador + " elementos que buscas");
  44. //JOptionPane.showMessageDialog(null,"Cordenadas " + Cordenadas);
  45.  
  46. if (contador != 0){
  47. try {
  48.   ImageIO.write(Nueva, "jpg", new File("Resultado.png"));
  49. } catch (IOException e) {
  50.   System.out.println("Error de escritura");
  51. }
  52. Resultado.setIcon(new ImageIcon("Resultado.png"));
  53. JOptionPane.showMessageDialog(null,Resultado);
  54. }else{
  55. JOptionPane.showMessageDialog(null,"No se encontro ningun patron");
  56. }
  57. }
  58.  
  59. }
  60. class Coversion {
  61.  
  62.    BufferedImage toBufferedImage(Image image) {
  63. if( image instanceof BufferedImage ) {
  64. return( (BufferedImage)image );
  65. } else {
  66. image = new ImageIcon(image).getImage();
  67. BufferedImage bufferedImage = new BufferedImage(
  68. image.getWidth(null),
  69. image.getHeight(null),
  70. BufferedImage.TYPE_INT_RGB );
  71. Graphics g = bufferedImage.createGraphics();
  72. g.drawImage(image,0,0,null);
  73. g.dispose();
  74.  
  75. return( bufferedImage );
  76. }
  77. }
  78. }

La imagen original queda asi:


Si nos damos cuenta emos escrito en la imagen pequeños puntos blancos que en este caso es el patron que estamos buscando

Despues de haber pasado nuestro programa por la imagen y haber especificado buscar el patron blanco!!! no da esta imagen como resultado



Bingo!!! encontro los patrones reconocio lo que estaba buscando y lo señalo!!!

 :D

Para muchos funcinal, para muchos novato, para muchos perdida de tiempo. ustedes que opinan???

NOTA: El unico parametro que tienes que cambiar en el codigo es
Código:
for(int x=0;x<=449;x++){
for(int y=0;y<=331;y++){

tendras que cambiar los limites de X y Y segun el numero de pixeles de imagen. recuerda que es si la imagen es de 450X332 tienes que poner en los limites de los for anidado 449X331 pues comenzamos de 0

Saludos y espero que les sirva su amigo CyberServer.

Este proyecto todavia no lo muestro asi que si eres del Tecnologico de Jocotitlan ( Tesjo) no se te ocurra copiarlo maldito PIRATA!!! jajaja ntc saludos.!!


NOTOTA: PERDON POR LA ESTRUCTURA "PUERCA DEL CODIGO" Reconozco QUE ES UNA PORQUERIA EN CUANTO A LIMPIEZA PERO ME KEME LA CABEZA PENSANDO COMO HACERLE Y ME OLVIDE DE LA INGENIERIA DE SOFTWARE :p
72  Programación / Java / Re: Problemas con puerto paralelo con jna y java en: 26 Mayo 2010, 03:45 am
Ajuaaaaaa ya pude ya pude ya pudeeee hermanos ya pudeeee!!!! AUUUUUUU no manches k perron ya puedo conectar el puerto paralelo db25 desde java con JNA y la libreria io.dll

lo que hice para solucionarlo es facil en lugar de enviarle el parametro de direccion del puerto como 378 lo converti a decimal que es 888 y lo pase como Tipo entero INT en lugar de String que es como estaba!!! y funcionaaaaa ajuaaaaaa prenden los leds, el codigo resultante queda.

Código:
import javax.swing.*;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

public class DB25 {

    public static void main (String[] args) {
    CLibrary.INSTANCE.PortOut(888,2);               
    JOptionPane.showMessageDialog(null,"Enviando Valor");
}
    public interface CLibrary extends Library {
       CLibrary INSTANCE = (CLibrary)Native.loadLibrary(
          (Platform.isWindows() ? "io" : "c"),
          CLibrary.class);
         public void PortOut (int Port ,int Value);

}
   
}


No lo puedo creer que aya funcionado!!! ajuaaaaaa eaeaea

Saludos Atte: CyberServer
73  Programación / Java / Re: paquete jna java en: 26 Mayo 2010, 02:49 am
Amigos que saben la intencidad de JNA!
 kisiera k me pudieran ayudar con este post sobre manipulacion del puerto paralelo con io.dll y jna


http://foro.elhacker.net/java/problemas_con_puerto_paralelo_con_jna_y_java-t294554.0.html


agradeceria su pronta ayuda ya que es para un proyecto y ya me detuve aii gracias;
74  Programación / Java / [SOLUCIONADO]Problemas con puerto paralelo con jna y java en: 25 Mayo 2010, 03:12 am
Hola amigos, miren estoy tratando de usar el puerto paralelo para poder prender unos leds.

E escuchado que existe una clase de java que ya lo hace pero tambien escuche k es solo para plataformas linux ya que desde windows es necesario que exista una .dll de por medio.!!!!


ahora que consegui la libreria que se llama "io.dll" estoy tratando de programar el puerto con JNA(Java Native Action) pero.....

no sucede nada cheque con programas ya compilados que utilizan esta misma libreria en visual basic 6.0 y si funcionan los puertos si sale corriente de aii!!!!

Pero a la hora de compilar mi codigo en java no me marca errores, pero simplemente no aii salida de corriente por el puerto!!!

Agredesco cualquier ayuda que las ideas se me estas llendo!!!!

Este es mi codigo en JAVA:
Código:
import javax.swing.*;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

public class DB25 {

    public static void main (String[] args) {
     CLibrary.INSTANCE.PortOut("0x378",2);                 //AQUI SIENTO QUE ESTA EL PROBLEMA POR LA DIRECCION DE SALIDA
     JOptionPane.showMessageDialog(null,"Enviando Valor");
}
    public interface CLibrary extends Library {
       CLibrary INSTANCE = (CLibrary)Native.loadLibrary(
          (Platform.isWindows() ? "io" : "c"),
          CLibrary.class);
         public void PortOut (String Port ,int Value);

}
    
}

nota: por cierto en la llamada al puerto ya le intente como en visual Basci poniendo "&H"+"378" pero no pasa NADAAAA

Ayudaaaaaaaaaaaa
75  Programación / Java / crear puerto paralelo virtual en: 21 Mayo 2010, 01:02 am
Hola amigos veran estoy tratando de controlar el puerto paralelo desde Java con JNA y inpout32.dll

Pero resulta que mi lap no tiene ya ese puerto y no logro conseguir un adaptador usb a paralelo.!!!

Saben ustedes de algun software que virtualiza o puedas crear un puerto paralelo virtual para simular las salidas deacuerdo a mi programa en Java.


Espero me puedan ayudar con alguna informacion, de antemano gracias!!!
76  Programación / Java / Re: Manejar WebCam o camaraWeb desde JAVA en: 19 Mayo 2010, 22:18 pm
Orale compa ya estas!! que bueno que te aya servidor :P saludos desde Atlacomulco  ;-) ;-) ;-)
77  Programación / Java / Re: Manejar WebCam o camaraWeb desde JAVA en: 19 Mayo 2010, 06:08 am
OK MEN ya entendi lo siento si te confundi. por cierto estuvo chido el video se ve que ya te dominas el NetBeans!!!!

Mira segun lo que yo pude ver (corrigeme si me equivoco).

Tus metodos para los eventos del boton los genera automaticamente el IDE pero estos se van agregarndo a tu clase que se llama ventana.java dentro esta tambien el public static void main (String[] args).

Mira el error que te manda mi clase es por k estas instanciando dos veces( instancias es cuando crear un objeto de tipo de la clase CamaraWeb objeto=new CamaraWeb()), por decirlo de otro cuando ases esto automaticamente la clase por medio del constructor inicializa la camaraweb sin que tu te des cuenta pero tu no puedes verla asta que llames al evento VerCamara(), entonces si instancias 2 veces estas cargando una camara web que ya en uso la primera ves.!!! es por eso que te marca ese error de

Citar
capture device in use

Entonces para solucionar este error y juntarlo con tu codigo tenemos que declarar una variable GLOBAL(esta se declara fuera de cualquier metodo y su funcion es k pueda ser accesible desde cualquier metodo de la clase).

Declarar una Variable global:
Código:
class ventana{

public CamaraWeb Ver=new CamaraWeb();

public static void main (String[] args) {

    }

}


en el codigo de arriva declaramos a Ver de tipo CamaraWeb como Variable GLOBAL entonces podremos acceder y hacer uso de ella desde cualquier metodo que este dentro de la clase ventana.

ahora pues. para resolver el problema de tu codigo tendremos que hacer esto.
Código:
class ventana{

public CamaraWeb Ver=new CamaraWeb();
//Es Ver con malluscula la primera no te vallas a confundir abajo

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        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:
        int resultado=Ver.Fotografiar("fotosjava", true, "imagen1");
        if(resultado==0){
JOptionPane.showMessageDialog(null,"Error en la Fotografia");
}

    }

public static void main (String[] args) {

    }
}

Y Bingo, con esto resolvimos el dilema de instanciar dos veces a la clase...... viste que solo lo hisimos una ves con el objeto o variable "Ver".....  ;D

Espero haber sido lo mas claro posible, y cualquier duda hasmela saber. atte: CyberServer
78  Programación / Java / Re: Manejar WebCam o camaraWeb desde JAVA 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

79  Programación / Java / Re: Manejar WebCam o camaraWeb desde JAVA 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






80  Programación / Java / Re: Manejar WebCam o camaraWeb desde JAVA 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
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines