Android 修改Camera的最大变焦倍数

发布于:2024-05-02 ⋅ 阅读:(35) ⋅ 点赞:(0)

   由于项目的摄像头在预览时如果放大太多倍(比如放大4倍或者8倍)会出现模糊的情况,所以我们需要做出限制,修改Camera的最大变焦倍数。(以下示例为Android13 MTK平台)

一、前摄后摄都修改

  1. 第一种修改方案:
vendor/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/common/config_static_metadata_scaler.h

例如我们这里修改的就是4倍

    //==========================================================================
    CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM)
        CONFIG_ENTRY_VALUE(4, MFLOAT) //此参数表示最大支持变焦数
    CONFIG_METADATA_END()
    //==========================================================================
  1. 第二种修改方案:
vendor/vendor/mediatek/proprietary/packages/apps/Camera2/feature/setting/zoom/src/com/mediatek/camera/feature/setting/zoom/ZoomCaptureRequestConfig.java

   将mMaxZoom变量重新赋值为我们想要的变焦倍数

 @Override
    public void setCameraCharacteristics(CameraCharacteristics characteristics) {
	    //........省略多余代码.........
	    
            } else {
            mMaxZoom = characteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
        }
        LogHelper.d(TAG, "[setCameraCharacteristics] MaxZoom: " + mMaxZoom);
        
         //将mMaxZoom重新赋值 
         mMaxZoom = 2.0f;	//此参数表示最大支持变焦数
         LogHelper.d(TAG, "[setCameraCharacteristics] MaxZoom: " + mMaxZoom);

        //judge whether support zoom ratio or not
        Range<Float> zoomRatioRange =characteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE);
        mZoomRatioSupported = zoomRatioRange != null && zoomRatioRange.getUpper() >0;
        
		//........省略多余代码.........

二、只修改前摄或后摄

   首先,我们要找到项目中所用到的前摄、后摄的目录名称是什么。例如我当前的项目的前摄是在gc05a2_mipi_raw目录下,那么我们就找到其中的metadata.sensor文件去修改即可。

   那知道项目中前摄后摄的目录是哪一个怎么办?

   我们在vendor/vendor/device/xxxx/类似这样的目录中去找到ProjectConfig.mk,里面的CUSTOM_HAL_IMGSENSOR和CUSTOM_KERNEL_IMGSENSOR这两个字段里面就包含前后摄的目录名称。

类似于这样

CUSTOM_HAL_IMGSENSOR = gc13a0_mipi_raw gc05a2_mipi_raw gc02m1_mipi_raw ov9281_mipi_raw
CUSTOM_KERNEL_IMGSENSOR = gc13a0_mipi_raw gc05a2_mipi_raw gc02m1_mipi_raw ov9281_mipi_raw
vendor/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/sensor/gc05a2_mipi_raw/config_static_metadata.sensor.gc05a2mipiraw.h

   在config_static_metadata.sensor.gc05a2mipiraw.h文件中加上这样的修改,这样就相当于前摄我们修改为了最大两倍。在编译时,这里配置的变量会覆盖掉common目录中的,所以最终会以这里修改的为准。

	//==========================================================================
    CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM)
        CONFIG_ENTRY_VALUE(2, MFLOAT) //此参数表示最大支持变焦数
    CONFIG_METADATA_END()
    //==========================================================================
因为不可能,所以才值得相信。

网站公告

今日签到

点亮在社区的每一天
去签到