• Domingo 22 de Diciembre de 2024, 03:53

Autor Tema:  MEdir distancia en una imagen  (Leído 8164 veces)

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
MEdir distancia en una imagen
« en: Lunes 23 de Marzo de 2009, 08:24 »
0
Hola como les va??

Bueno lo que necesito hacer es encontrar una manera de medir distancia entre dos puntos de una imagen haciendo click en el primer punto con el mouse y luego en el segundo...

Osea lo que necesito es saber cuantos pixeles hay entre dos puntos para dsp hacer la extrapolacion a centimetros de acuerdo a la escala de mi imagen..

ALguna Idea?

desde ya muchas gracias!!

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: MEdir distancia en una imagen
« Respuesta #1 en: Lunes 23 de Marzo de 2009, 12:34 »
0
leccion ..... e aqui lo importante de saber algebra.


teniendo las coordenadas X e Y de los puntos, y quieres saber la distancia que los separas .... usa algebra.


http://www.sectormatematica.cl/contenidos/distancia.htm

http://es.wikipedia.org/wiki/Distancia

http://matematicasies.com/spip.php?article1555

http://www.educaplus.org/play-38-Distan ... untos.html

http://ar.answers.yahoo.com/question/in ... 623AACtbIV

http://ar.kalipedia.com/matematicas-geo ... eo_228.Kes

http://www.conocimientosweb.net/zip/article4709.html



tambien puedes usar TRIGONOMETRIA , creando un triangulo virtual y avrigua el cateto que une los 2 puntos.


en fin ... espero despues nos digas como has solucionado el problema.


(quizas el control que uses para mostrar la imagen tenga algun metodo incorporado para averiguar la distancia entre pixeles, averigua, en los lenguajes visuales suele ser asi)
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: MEdir distancia en una imagen
« Respuesta #2 en: Lunes 23 de Marzo de 2009, 17:29 »
0
Hola gracias por tu respuesta..

Pero, algebra se.. el problema es que lo que no se es manipular el builder para que me de la posicion de un punto con respecto a algo.. necesito una funcion que me devuelva la posicion de un punto en el canvas con sus coordenadas x e y. supongo que como la mayoria de las funciones me devolvera la posicion con respecto a alguna de las esquinas del TImage.

Entonces aqui va mi pregunta nuevamente..

Hay alguna funcion, metodo o algo, que me permita obtener de un punto en el Canvas de un TImage su posicion con cooredenadas X e Y?

Bueno desde ya muchas gracias... y perdon si no fui muy claro anteriormente cuando pregunte..

TRod

  • Miembro MUY activo
  • ***
  • Mensajes: 108
  • Nacionalidad: mx
    • Ver Perfil
Re: MEdir distancia en una imagen
« Respuesta #3 en: Lunes 23 de Marzo de 2009, 22:14 »
0
Puede Funcionar GetCursorPos(TPoint *P). Claro esta que en el resultado debes de restar la posicion XY tanto de tu ventana "padre" como la de tu TImage.
Suerte.

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: MEdir distancia en una imagen
« Respuesta #4 en: Martes 24 de Marzo de 2009, 01:15 »
0
existe una funcion que se llama PIXEL , o algo asi.

se la usa de la siguiente manera ( si recuerdo bien , no me acuerdo, no estoy en mi PC) :

imagen->pixel
  • [y]->(algo aqui de interes)


o

imagen.pixel
  • [y].(algo aqui de interes)



o

imagen->pixel
  • [y].(algo aqui de interes)



experimenta, perdoname, no recuerdo bien.,


fijate en la ayuda del BUILDER que esta genial y completa.

fijate que propiedades y funciones dispones con una TImage o TCanvas no me acuerdo pero se usaba una notacion matricial como en mi ejemplo.


o creo que la imagen tiene una propiedad CANVAS y de ahi deriva en pixel
  • [y] o directamente en CANVAS
  • [y]



AQUI ENCONTRE ALGO EN DELPHI (es lo mismo, traducilo a builder, recuerda que delphi es como builder pero con pascal, builder es C++)

http://www.clubdelphi.com/foros/showthread.php?t=63474
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: MEdir distancia en una imagen
« Respuesta #5 en: Martes 24 de Marzo de 2009, 09:02 »
0
Bueno Gracias a todos!!

una vez mas este foro me ha mostrado la direccion por la que debo ir..

ya resolvi mi necesidad

aca les explico el como..

Primero defini 4 variables globales

bool medir;
int coordX;
int coordY;
int medircont;

luego tengo un botton en el cual hago click para comenzar la medicion y tiene el siguiente codigo dentro..
void __fastcall TForm1::Button2Click(TObject *Sender)
{
medir=true;
medircont=1;//luego explico bien para que sirve esta variable
//Los edits los pongo solo para corroborar que este midiendo bien, no son necesarios.
Edit1->Text="midiendo";
Edit2->Text="midiendo";
Edit3->Text="midiendo";
}

//Una vez presionado el boton programa el evento onclick de la imagen para que pueda medir la distancia entre dos puntos haciendo click en ellos. Es decir hago click en el boton que tiene caption medir y luego hago click en el primer punto y posteriormente hago click en el segundo punto para calcular la distancia entre ellos..

//Aqui les paso el codigo del evento onclick de la imagen

void __fastcall TForm1::Image1Click(TObject *Sender)
{

if(medir)
{
TPoint posicion;

 if(medircont==1)//cuando medircont vale 1 significa que voy a hacer click en el primer punto
 {
  GetCursorPos((&posicion));
  coordX=posicion.x;
  coordY=posicion.y;
  medircont++;
 }

 else if(medircont==2)//cuando medircont vale 2 quiere decir que voy a hacer click en el segundo punto
 {
  GetCursorPos((&posicion));
  int X1=posicion.x;
  int Y1=posicion.y;

  coordX=abs(coordX-X1);
  coordY=abs(coordY-Y1);

  Edit1->Text=coordX;
  Edit2->Text=coordY;


  int dist=sqrt(pow(coordX,2)+ pow(coordY,2));//aqui por pitagoras calculo la distancia entre los puntos a partir de la resta
                                                                        entre sus coordenadas X y Y
  Edit3->Text=dist;//nuevamente este edit solo es para control, no es necesario
 }
}
}


Bueno espero q a alguien le sirva, no se si el codigo es del todo eficiente.. pero por lo menos anda.. Dsp lo mejorare si es necesario.