OpenCV: ¿Cómo encuentro la distancia entre una cámara y un objeto detectado usando la clasificación en cascada?

En general, no es posible.

Debe conocer las dimensiones aproximadas (x, y) del objeto que desea detectar. Por ejemplo, si es una cara frontal, tiene una idea de las dimensiones aproximadas que tiene. Si se trata de una vista de cuerpo completo de una persona, no hay dimensiones “aproximadas” posibles porque el tamaño (x, y) cambiará drásticamente cuando la persona esté parada o sentada.
Por lo tanto, primero debe determinar si su objeto es deformable o rígido. Si es rígido, entonces proceda.

  1. Ahora debe realizar la calibración de la cámara para determinar la distancia focal ‘f’ de la cámara. La distancia focal es en términos de distancias de píxeles aquí.
  2. Después de detectar una instancia del objeto usando el clasificador en cascada, mida la longitud (o la respiración) del cuadro delimitador (en píxeles).
  3. Use la ecuación de la cámara estenopeica para determinar la profundidad.
    La ecuación es [matemática] L_ {obj} / profundidad = L_ {píxeles} / distancia focal [/ matemática] para este caso.

Espero que ayude.


Referencias
[1] Calibración de la cámara con OpenCV
[2] ¿Cómo calculo la distancia de un objeto en una foto?
[3] Modelo de cámara estenopeica