![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Bien, pero...
Hola coso, muchas gracias por tu rta, el tema es como obtengo el pixel, o sea estoy un poco máas que perdido.
Por si no fui del todo claro, describo nuevamente el enfoque la cosa es pintar una parte de la imagen, pero antes de pintar obtener un promedio de RGB de la parte pintada, nose si se entiende Igualmente muchas gracias y seguiré investigando un poco mas Saludos, Walter |
|
#2
|
|||
|
|||
|
Para obtener un pixel debes mirar en el objeto canvas, por ejemplo :
color := PaintBox1.Canvas.Pixels[x,y] o si es una imagen Image1.Picture.Bitmap.Canvas.Pixels[x,y] para hacer el promedio que decias, por ejemplo pasando a grises, seria algo como
echale un vistazo a la ayuda de delphi, buscando 'canvas' |
|
#3
|
||||
|
||||
|
Hola waly2k1,
Además Pixels[], cuentas con ScanLine() que permite leer "linea por línea" una imagen. ScanLine es mucho más rápido que el Pixels[]. Cuanto más grande sea la imagen, más se lento se hará, si bien es imperceptible a nuestros ojos. Si estás pensando en tener un cuenta gotas y quieres hacer cálculos con los valores RGB lo mejor es contar con ScanLine; sobre todo si se debe examinar pixeles vecinos. Veamos como te explico. Una imagen es una matriz, tiene un largo y un ancho. Código:
+---------+---------+ ... |255255255|255255255| ... +---------+---------+ ... |255255255|255255255| ... +---------+---------+ ... Código:
+---------+ |255255255| +---------+ Si leemos con ScanLine(), obtenemos esto: Código:
+-----------+-----------+ ... |255|255|255|255|255|255| ... +-----------+-----------+ ... Lo que se obtiene con ScanLine es un puntero al primer pixel. Si queremos ir a un pixel n-ésimo en la fila habrá que incrementar el valor de dicho puntero n veces de a 3. Es decir: n * 3. ¿Por qué ese 3? Ese 3 corresponde a la cantidad de canales: rojo, verde, azul. Cuando nos posicionamos en el lugar adecuado, tenemos entonces en el puntero ya lo valores: Siendo RGB un "vector puntero" de 3 posiciones. Si buscas sobre ScanLine() vas a encontrar ejemplos de como usarlo. Saludos, |
|
#4
|
|||
|
|||
|
Muy bien muchachos
A decir verdad me sirve muchísimo la ayuda brindada. Me surgió un imprevisto y deberé postergar esto un poco, pero ya en cualquier momento lo reanudo, pruebo y les comento como fue todo. Me sorprende sus conocimientos del tema, porque si bien las herramientas 'están', hay que saber utilizarlas.
Nuevamente gracias coso y Delphius por todo el tiempo que me dedicaron. Estamos en contacto por el tema en cualquier momento. Sigan así que siempre gente como yo les estará muy agradecida! Saludos, Walter |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como puedo medir la distancia de dos puntos (pixeles) ? | JuanErasmo | Gráficos | 1 | 14-12-2007 00:54:35 |
| Obtener unos datos de una bbdd | pennylane | SQL | 6 | 08-02-2007 13:32:02 |
| Como enviar unos edit.text a un reporte de Rave | Bairon Kumon | Impresión | 0 | 07-06-2006 22:56:30 |
| Como manipular los pixeles la matriz de valores en una imagen en escala de grises | erocha | Gráficos | 4 | 30-11-2003 06:20:32 |
| obtener filas que contienen unos datos y no contienen otros datos | Angel | Firebird e Interbase | 14 | 10-06-2003 10:11:23 |
|