wie können wir Messen die Entfernung zwischen Objekt und android-Handy-Kamera

Möchte ich berechnen Sie die Entfernung zwischen der Kamera und dem erkannten Objekt.Für diese habe ich versucht, eine Menge von Methoden, die ich versuchte zu finden, der Winkel zwischen dem Objekt und der Kamera mit Beschleunigungssensor und verwenden Sie dann

d = h * tan a

h ist die Höhe von der Basis in der Regel die 1.4

und ich habe versucht, zu berechnen und den Winkel, der durch die Verwendung von get-Orientierung-Methode. Bitte lassen Sie mich wissen, wo ich falsch mache. Seine seit mehr als 2 Tagen habe ich Schwierigkeiten mit dieser Anforderung. Wir haben verschiedene Kamera-Anwendungen, die auf Android-Store und habe versucht zu verstehen, die die gleiche Funktionalität, aber es wurde nichts fruchtbar.

 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            accSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            magnetSensor = mSensorManager
                    .getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        //TODO Auto-generated method stub
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
            gravity = event.values;
        if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
            geoMagnetic = event.values;
        if (gravity != null && geoMagnetic != null) {
            float R[] = new float[9];
            float I[] = new float[9];
            boolean success = SensorManager.getRotationMatrix(R, I, gravity,
                    geoMagnetic);
            if (success) {
                /* Orientation has azimuth, pitch and roll */
                float orientation[] = new float[3];
                //SensorManager.remapCoordinateSystem(R, 1, 3, orientation);
                SensorManager.getOrientation(R, orientation);
                azimut = 57.29578F * orientation[0];
                pitch = 57.29578F * orientation[1];
                roll = 57.29578F * orientation[2];
            }
        }
    }


        captureButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //get an image from the camera

                double d = (Math.tan(Math.toRadians(Math.abs(pitch))) * sensorHeight);
                Toast.makeText(
                        getApplicationContext(),
                        "Distance = "
                                + String.valueOf(d)
                                        + "m  Angle = "
                                        + String.valueOf(Math.toRadians(Math.abs(pitch))),
                        Toast.LENGTH_LONG).show();


            }
        });



protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, accSensor,
                SensorManager.SENSOR_DELAY_NORMAL);
        mSensorManager.registerListener(this, magnetSensor,
                SensorManager.SENSOR_DELAY_NORMAL);
    }
  • Wie würden die Winkel beziehen sich auf die Entfernung? Was ist, wenn ich stehe auf einem Balkon? Auch, wie kann man überhaupt Messen Sie den Abstand, wenn Sie nicht wissen, die Abmessungen des aufgenommenen Objekts? Plus, wie viel Objektiv und optischer sensor die Dichte der Informationen, die Sie benutzen?
  • Der Zweck der app ist der Abstand zwischen einem Objekt und der Kamera. Vorausgesetzt, beide stehen auf dem gleichen Boden. Wir werden nicht versuchen, Messen Sie die Größe des Objekts.
  • Auch, Sie wollen schauen, stackoverflow.com/q/4588485
  • Es ist nicht möglich, mit nur einer Kamera. Sie haben, um zu wissen, weitere Informationen zum positionieren des Objekts relativ zu Ihrem Gerät. Es ist nicht für nichts, dass der Kinect ist ein IR-beamer + IR-Kamera neben der normalen Kamera. Die Ausrichtung Ihres Gerätes werden Ihnen keine Ahnung auf die Entfernung des Objekts vor der Kamera.
  • Ich habe schon geschaut in der es aber nicht in der Lage gewesen, um die Winkel richtig als Ergebnis von denen nicht in der Lage zu verwenden, Tan, um die Distanz.Der Zweck ist, nur um appoximate Entfernung.
  • Könnten Sie mir sagen, was ist das 57.29578 F?

InformationsquelleAutor Rats Tyagi | 2013-04-11
Schreibe einen Kommentar