Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2008
Cesar Junior Cesar Junior is offline
Miembro
 
Registrado: ago 2007
Posts: 24
Poder: 0
Cesar Junior Va por buen camino
Cita:
Empezado por coso Ver Mensaje
Hola de nuevo,

la gracia de la 'erosion' seria transformar a negro aquellos pixeles que tienen alguno de sus pixeles colindantes en negro tambien...quedaria algo asi :


Código Delphi [-]

procedure Erosionar( origen, destino : TCanvas);
var
i, j : integer;
begin
for i := 0 to origen.Width do
for j := 0 to origen.Height do
begin
if (origen.Pixels[i-1,j-1] = clBlack) or
(origen.Pixels[i ,j-1] = clBlack) or
(origen.Pixels[i+1,j-1] = clBlack) or
...
(origen.Pixels[i ,j+1] = clBlack) or
(origen.Pixels[i+1,j+1] = clBlack) then
destino.Pixels[i,j] := clBlack else destino.Pixels[i,j] := clWhite;
end;
end;






mas o menos...como ves, se miran los pixeles colindantes o el mismo, y si alguno de ellos es clBlack, entonces el destino se pinta tambien clBlack. Saludos.

E intentado de varias forma, pro no logre exito, se que el problema esta en la programacion q hago, pero no logro corrigir, com origen, destino : TCanvas, no compila, para en origen.Width me dice q no es valido, e intentado de otras formas pero no logre
Responder Con Cita
  #2  
Antiguo 01-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
vaya, es cierto : lo escribi de memoria y resulta que TCanvas no tiene ni width ni height. Supongo q entiendes mas o menos como funciona : es bastante modificable a, por ejemplo, TImage, TPicture o lo que estes usando para guardar las imagenes. Saludos.

Última edición por coso fecha: 02-10-2008 a las 15:56:40.
Responder Con Cita
  #3  
Antiguo 10-10-2008
Cesar Junior Cesar Junior is offline
Miembro
 
Registrado: ago 2007
Posts: 24
Poder: 0
Cesar Junior Va por buen camino
Coso e intentado de esta forma pero tbm no me dio resultado, conste q si creo un origen y un destino no me compila, me da una mesage de falta de parametros, y como esta abajo solo invierte los colores


Código Delphi [-]
procedure Erosionar( ABmp : TBitmap);
var
i, j : integer;
begin
for i := 0 to ABmp.Width do
for j := 0 to ABmp.Height do
begin
if (ABmp.Canvas.Pixels[i-1,j-1] = clwhite) or
(ABmp.Canvas.Pixels[i ,j-1] = clwhite) or
(ABmp.Canvas.Pixels[i+1,j-1] = clwhite) or
(ABmp.Canvas.Pixels [i-1,j] = clwhite) or
(ABmp.Canvas.Pixels [i ,j] = clwhite) or
(ABmp.Canvas.Pixels [i+1,j] = clwhite) or
(ABmp.Canvas.Pixels [i-1,j+1] = clwhite) or
(ABmp.Canvas.Pixels [i ,j+1] = clwhite) or
(ABmp.Canvas.Pixels[i+1,j+1] = clwhite) then
ABmp.Canvas.Pixels[i,j] := clblack else ABmp.Canvas.Pixels[i,j] := clwhite;
end;
end;
Responder Con Cita
  #4  
Antiguo 10-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
bueno...habia puesto...

Cita:
...
(origen.Pixels[i-1,j-1] = clBlack) or
(origen.Pixels[i ,j-1] = clBlack) or
...
then
destino.Pixels[i,j] := clBlack else destino.Pixels[i,j] := clWhite;
y el tuyo...

Cita:
...
(ABmp.Canvas.Pixels[i+1,j-1] = clwhite) or
(ABmp.Canvas.Pixels [i-1,j] = clwhite) or
...
then ABmp.Canvas.Pixels[i,j] := clblack else ABmp.Canvas.Pixels[i,j] := clwhite;
probablemente por eso te invierte invierte los colores
Responder Con Cita
  #5  
Antiguo 10-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Por otra banda, en esa funcion hay dos canvas: uno de origen, otro de destino. Si vas pintando todo en uno pierde sentido, pues al mirar los anteriores ya lo habras pintado a tu manera...
Responder Con Cita
  #6  
Antiguo 10-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
A ver si tengo un ratillo y lo hago...
Responder Con Cita
  #7  
Antiguo 10-10-2008
Cesar Junior Cesar Junior is offline
Miembro
 
Registrado: ago 2007
Posts: 24
Poder: 0
Cesar Junior Va por buen camino
en verdad havia notado eso, el problema es que si crio un otro Canvas de destino no me compila al aplicar el procedure a la imagen me da el siguiente erros [Error] Unit1.pas(1160): Not enough actual parameters;

la aplico de esta forma :

Erosionar(Image1.picture.bitmap);
Responder Con Cita
  #8  
Antiguo 10-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código Delphi [-]
procedure Erosionar(bmp : TBitmap);
var
    i, j : integer;
    ori  : TBitmap;
begin
    ori := TBitmap.Create;
    ori.Width  := bmp.Width;
    ori.Height := bmp.Height;
    for i := 0 to bmp.width do
    for j := 0 to bmp.Height do
    ori.Canvas.Pixels[i,j] := bmp.Canvas.Pixels[i,j];
    for i := 0 to bmp.width do
    for j := 0 to bmp.Height do
    with ori.Canvas do
    begin
      if (Pixels[i-1,j-1]  = clBlack) or
         (Pixels[i ,j-1]   = clBlack) or
         (Pixels[i+1,j-1]  = clBlack) or
         (Pixels [i-1,j]   = clBlack) or
         (Pixels [i+1,j]   = clBlack) or
         (Pixels [i-1,j+1] = clBlack) or
         (Pixels [i ,j+1]  = clBlack) or
         (Pixels[i+1,j+1]  = clBlack) then
        bmp.canvas.Pixels[i,j] := clblack else
        bmp.canvas.Pixels[i,j] := Pixels[i,j];
   end;
   ori.Free;
end;

de todas maneras, te recomiendo que entiendas el codigo, sino siempre estaras pidiendo al respecto. Un saludo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procesamiento De Archivos De Audio Y Video JCVCARMONA Varios 3 22-01-2011 02:20:18
Libreria de procesamiento de imagen JCarlosas Gráficos 3 15-05-2007 17:51:00
procesamiento de voz elcigarra Varios 0 26-01-2006 13:05:29
Como dar Prioridad de Procesamiento a una Aplicación???? AGAG4 Varios 3 19-05-2005 18:15:31
MS intenta patentar el uso de XML en el procesamiento de textos kinobi Debates 4 25-01-2004 04:02:08


La franja horaria es GMT +2. Ahora son las 23:30:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi