3

parameters.getZoomRatios() でズーム比のリストを取得した場合、返される値は 100,114...200 (1x 1.14x ...2.0x ズームに対応) ですが、カメラ プレビューでは 200 (2x ズーム) で、写真は 2 倍以上にズームされているように見えます。サンプル画像では、1x ズームで 6cm、2x ズームで 2.5cm の視野を示しています... 2x で 3.0cm を期待していました。

1x (100) ズームで 6 cm 2倍(200)ズームで2.5cm

これらの値を解釈する別の方法はありますか?...他の誰かがこれを見ていますか? または、このデバイス/バージョン固有のものですか、それとも定数または他の値 (焦点距離) を掛けるべきですか? カメラのビューをアプリのレンダリングされたビューに一致させようとしていますが、ズームすると、一致が台無しになります。

コードはここで標準です:

public void setZoom(int pZoom)
{
    final Camera.Parameters p = this.mCamera.getParameters();
    if (p.isZoomSupported())
    {
        p.setZoom(pZoom);
        this.mCamera.setParameters(p);

    }


}

    public int getZoom( android.hardware.Camera camera)
    {
        int zoom = 100;

        final Parameters p = camera.getParameters();
        if (p.isZoomSupported())
        {
            final List<Integer> zoomRatios = p.getZoomRatios();
            final int zoomIndex = p.getZoom();
            if (zoomIndex < zoomRatios.size())
            {
                zoom = zoomRatios.get(zoomIndex);
            }   
            //Log.d("zoom","ix:" + zoomIndex + " z:"+zoom);         

        }               
        return zoom;
    }   
4

2 に答える 2

3

関数「camera.getParameters()。getZoomRatios()」を呼び出すことは、カメラのズーム比を取得するための最も安全な方法のようです。まあ、そうですが、私が知る限り、各Androidデバイスで同じように動作するわけではありません。

さまざまなデバイスでズーム率をテストしました。AsusでgetZoomRatios()を呼び出すと、次のように返されます:[100、125、150、175、200、225、250、275、300、325、350、375、400、 425、450、475、500、525、550、575、600、625、650、675、700、725、750、775、800]。これらのズーム比で、1倍ズームで6.0cmをテストした場合、2倍ズームで3.0cmになります。

しかし、Samsungは私にこのリストを返しました:[100、102、104、109、111、113、119、121、124、131、134、138、146、150、155、159、165、170、182、189、200 、213、222、232、243、255、283、300、319、364、400]。これらの値は少し奇妙です。1倍ズームで6.0cmをテストしている間、2倍ズームで期待される3.0cmを得ることができなかったからです。デバイスの標準カメラアプリケーションでズーム率を確認したところ、ズーム比は等距離でなければならないことに気づきました。代わりに、等距離の値でズーム比の別のリストを生成しました:[100、110、120、130、140、150、160、170、180、190、200、210、220、230、240、250、260、270、 280、290、300、310、320、330、340、350、360、370、380、390、400]。

たとえば、ズームを2Xに設定したい場合は、「parameters.setZoom(20)」(元のSamsungリストを参照)がありますが、実際には、期待される2Xがないため、間違いです。ズームしますが、3倍ズームします(生成されたリストを参照)。

ZoomRatiosリストが信頼できない場合は、最小(1X)と​​最大のズーム値が正しく返されると仮定して、2つの連続するズーム比間の距離を計算する独自のzoomRatiosリストを生成してみてください。ちなみに、ズーム率リストのサイズも正しいので、2つの連続するズーム率の値の差を計算するには、式(greatestZoomRatio-smallestZoomRatio)/numberOfZoomRatioElementsを使用できます。

于 2013-03-13T13:21:33.150 に答える
1

また、さまざまな電話モデルで同等のズーム レベルを修正しようとしたときに、この問題に遭遇しました。比率は有望に思えましたが、あまりにも一貫性がなかったため、使用を断念しました。

アーサー王として、私は値が等距離である必要があることにも気付きました.最後の値だけが実際のズーム倍率を反映していないことがありました. たとえば、私のSamsung S4の比率は次のとおりです。 , 158, 162, 166, 170, 174, 178, 182, 186, 190, 195, 200] 電話には 4 倍のズームがありますが、リストは 400 で終わらないため、誤解を招きます。

理屈が分からないので、結局諦めました。誰かが説明を提供できれば、私は非常に興味があります。乾杯

于 2014-07-31T16:56:02.523 に答える