Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

3/3/11

Posterizar imagenes en Java2d (Filtro Posterize)

JAN29


Posterizar una imagen es reducir el tono de sus colores a una gama mas uniforme tipo "Poster"



Teniendo una gama de colores :

RGB: 66,66,91
RGB: 131,138,211
RGB: 73,80,214

Se reducira la diferencia entre estos mediante la formula:

NuevoColorRGB = Color_RGB - (Color_RGB MOD NIVEL)

Donde Nivel podra tomar valores entre 1 y 255

Ej:
Nivel: 100

RGB: 66,66,91

R: 66 - (66 mod 100) = 0
G: 66 - (66 mod 100) = 0
B: 91 - (91 mod 100) = 0

RGB: 131,138,211

R: 131 - (131 mod 100) = 100
G: 138 - (138 mod 100) = 100
B: 211 - (211 mod 100) = 200

RGB: 73,80,214
    
R: 73 - (73 mod 100) = 0
G: 80 - (80 mod 100) = 0
B: 214 - (214 mod 100) = 200

Gama de Colores Original


Despues del Posterizado


Clase: posterize.java
Codigo Fuente:

import java.awt.Color;
import java.awt.image.BufferedImage;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class posterize {
    private BufferedImage foto;    
    private int r,g,b;
    private Color c;
    
    public posterize(){}

    public void SetPosterize(BufferedImage f, int nivel){
        this.foto = f;        
        for(int i=0;i<foto.getWidth();i++){
          for(int j=0;j<foto.getHeight();j++){  
                //Se obtiene el color RGB de cada pixel
                c = new Color(foto.getRGB(i, j));              
                r = c.getRed();
                g = c.getGreen();
                b = c.getBlue();
                //Se calcula el valor para la Posterización
                r = (r - (r % nivel));
                g = (g - (g % nivel));
                b = (b - (b % nivel));
                //se añade los nuevos valores
                foto.setRGB(i, j, new Color(r,g,b).getRGB());                                                                    
          }
        }        
    }
    
    public BufferedImage getFoto(){
        return this.foto;
    }
    
}

Implementando esta clase, tenemos a diferentes valores del parametro de calculo "Nivel":

Nivel : 50
Nivel: 100
Nivel: 150
A mayor valor de "Nivel", la imagen se ira haciendo más uniforme

Post recomendado