Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: <Trocutor> en 29 Septiembre 2018, 18:36 pm



Título: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: <Trocutor> en 29 Septiembre 2018, 18:36 pm
Hola, buenas tardes, ¿hay alguna manera de saber la distancia que hay de la camara a un objeto que se este observando con python3 y opencv?

No encuentro manera en ningun lado, ni ingles ni español

Muchas gracias de antemano


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: tincopasan en 29 Septiembre 2018, 20:17 pm
perdón pero se ve que no buscas correctamente, hay muchos tutoriales de esto. Ahora tu pregunta es ambigua, hay muchas variables, por ejemplo ¿es un objeto conocido? ¿has calibrado la distancia anteriormente de algún objeto?
Basicamente para medir la distancia desde una cámara a un objeto se utiliza la similitud de triángulo que es más o menos así: supongamos que tenemos un objeto con un ancho conocido (A), colocamos este objeto a una cierta distancia (D) de la cámara. Tomamos una foto de nuestro objeto y medimos el ancho aparente en píxeles (P). Esto nos permite derivar la distancia focal percibida (DF) de nuestra cámara:

DF = (P x D) / A

por supuesto hay muchas formas más. Saludos.


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: <Trocutor> en 29 Septiembre 2018, 21:44 pm
perdón pero se ve que no buscas correctamente, hay muchos tutoriales de esto. Ahora tu pregunta es ambigua, hay muchas variables, por ejemplo ¿es un objeto conocido? ¿has calibrado la distancia anteriormente de algún objeto?
Basicamente para medir la distancia desde una cámara a un objeto se utiliza la similitud de triángulo que es más o menos así: supongamos que tenemos un objeto con un ancho conocido (A), colocamos este objeto a una cierta distancia (D) de la cámara. Tomamos una foto de nuestro objeto y medimos el ancho aparente en píxeles (P). Esto nos permite derivar la distancia focal percibida (DF) de nuestra cámara:

DF = (P x D) / A

por supuesto hay muchas formas más. Saludos.



Perdon, no me di cuenta de que no di suficiente informacion, del caso que estoy hablando es sin ningun objeto conocido, no se sabe ni el ancho ni la longitud ni la altura ni nada.

No, no he calibrado ninguna distancia anteriormente.

Este es el problema que encuentro, que al no saber ningun dato del objeto al que quiero saber la distancia que esta de la camara, no hay ningun tutorial(o por lo menos que yo haya encontrado)


Muchas gracias.


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: tincopasan en 29 Septiembre 2018, 22:00 pm
pues la verdad me parece algo dificil, no solo con opencv sino por una cuestión de calculo, porque si se puede calcular por medio de alguna camara o foto con cualquier lenguaje, de última se traslada a python.si es un ambiente controlado ¿por què no usar otro dispositivo? tipo arduino(que se puede usar con python)


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: <Trocutor> en 29 Septiembre 2018, 22:08 pm
pues la verdad me parece algo dificil, no solo con opencv sino por una cuestión de calculo, porque si se puede calcular por medio de alguna camara o foto con cualquier lenguaje, de última se traslada a python.si es un ambiente controlado ¿por què no usar otro dispositivo? tipo arduino(que se puede usar con python)

Pense a las malas que Arduino o RaspBerry no vendrian mal, pero si hay alguna posibilidad sin Arduino o RaspBerry me gustaria aprovecharla, ¿tu crees que de alguna otra manera que no sea con OpenCV pero si en Python3 se podria? Si no pruebo en Arduino y ya esta.

Muchas gracias.


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: srWhiteSkull en 29 Septiembre 2018, 22:55 pm
Yo hice un proyecto de este tipo usando OpenCV y requiere calibración, de la manera que sea.

La mayoría de animales que percibe la distancia con los ojos hace lo mismo, y la calibración comienza en el momento que comienza el desarrollo, aprendemos cuando somos niños a tener una aproximación de la distancia, generalmente más precisa si está al alcance la mano o nuestras extremidades y por supuesto lo medimos usando un sistema de medición aproximado; lejos, menos lejos, cerca, muy cerca, casi tocando. De ahí que posiblemente los primeros sistemas de medición fueran basados en pies o pulgadas.

zjcodv3g1SE

Y por supuesto, es necesaria la trigonometría tal como menciona tincopasan.


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: <Trocutor> en 30 Septiembre 2018, 16:09 pm
Yo hice un proyecto de este tipo usando OpenCV y requiere calibración, de la manera que sea.

La mayoría de animales que percibe la distancia con los ojos hace lo mismo, y la calibración comienza en el momento que comienza el desarrollo, aprendemos cuando somos niños a tener una aproximación de la distancia, generalmente más precisa si está al alcance la mano o nuestras extremidades y por supuesto lo medimos usando un sistema de medición aproximado; lejos, menos lejos, cerca, muy cerca, casi tocando. De ahí que posiblemente los primeros sistemas de medición fueran basados en pies o pulgadas.

zjcodv3g1SE

Y por supuesto, es necesaria la trigonometría tal como menciona tincopasan.

El unico problema que le veo a ese video es que usa dos camaras, y lo de tener que usar trigonometria para calcular la distancia no seria ningun problema

Muchas gracias.


Título: Re: [PYTHON3] Distancia camara-objeto con opencv
Publicado por: srWhiteSkull en 30 Septiembre 2018, 20:39 pm
Pero es que necesitas dos cámaras mínimo. Otra alternativa es usando un emisor y receptor de infrarojos o con ultrasonido, y calcular la distancia en base al tiempo que tarda en "rebotar".

En el vídeo que mostré uso una cámara estereoscópica hecha con un trozo de cartón y dos cámaras web(tienen que tener ambas la mismas características), de una resolución de *****, pegadas al cartón con cinta americana  :xD tecnología super barata que puedes hacerte con poco dinero.

Otra alternativa es usar el módulo de kinect de Microsoft, para esto incluso hay mucho software desarrollado por diversa gente para incluso escanear todo lo que entre en el campo de visión con un rango limitado.

------------------------------------------------------------------------------------------------

PD Por si vas hacerlo con una cámara estereoscópica, aunque sea artesanal como hice yo. El enlace de abajo te explica todo, hasta crear el mapa de disparidad, pero no convertir luego ese mapa a centímetros.

https://riunet.upv.es/bitstream/handle/10251/15832/memoria.pdf?sequence= (https://riunet.upv.es/bitstream/handle/10251/15832/memoria.pdf?sequence=)1