ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android camara参数getZoomRatio()值与预期不符

2019-10-31 21:24:59  阅读:417  来源: 互联网

标签:zoom augmented-reality camera android


如果我使用以下参数获取缩放比例列表:parameter.getZoomRatios(),则返回值为100,114 … 200(对应于1x 1.14x … 2.0x缩放),但在相机预览中为200(2x缩放),图片显示的放大倍数超过2倍.在示例图像中,在1x处显示6cm的焦点,在2x变焦处显示2.5cm的眼睛…我期望在2x时的3.0cm.

我还有另一种解释这些值的方式吗?…其他人看到了吗?还是此设备/版本特定,还是我应该乘以某个常数或其他值(焦距)?我正在尝试将相机视图与应用程序的渲染视图进行匹配,并且在缩放时,这使匹配变得混乱.

代码在这里是标准的:

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;
    }   

解决方法:

调用函数“ camera.getParameters().getZoomRatios()”似乎是获取相机缩放比例的最安全方法.嗯,是这样,但是-据我所知-它在每个Android设备上的行为方式都不相同.

我已经测试了不同设备上的缩放比例:在华硕上调用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.0厘米,那么在2倍变焦下将得到3.0厘米.

但是,三星给我返回了以下列表:
[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.0厘米时,如果在2倍变焦下无法达到预期的3.0厘米,则这些值将不正确.当我在设备的标准相机应用程序上验证缩放系数时,我意识到缩放比例必须等距.我改用等距值生成了另一个缩放比例列表:[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].

例如,如果我要将缩放比例设置为2倍,则将显示“ parameters.setZoom(20)”(请参阅​​原始的三星列表),这实际上是一个错误,因为我将无法获得预期的2倍.缩放,但3倍缩放(请参见生成的列表).

如果不信任您的zoomRatios列表,请尝试生成您自己的zoomRatios列表,并假定正确返回了最小(1X)和最大缩放值,并计算两个连续缩放比率之间的距离.顺便说一句,缩放比例列表的大小也是正确的,因此要计算两个连续缩放比例值之间的差异,可以使用以下公式:(greatestZoomRatio-minimumZoomRatio)/ numberOfZoomRatioElements.

标签:zoom,augmented-reality,camera,android
来源: https://codeday.me/bug/20191031/1978778.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有