很久没写文章了,也是由于这段时间工作上没有遇到一些值得记录的内容。最近有客户提出需求需要我们的SDK提供手动调整对焦和测光区的接口。到今天基本实现了用户的需求,目前记录一下其中的一些难点。SDK代码有点老,基本功能都是基于Camera1实现的,所以以下内容也是针对Camera1。
Camera1上调整对焦和测光有系统现成的API。具体过程如下:
- 先获取
Camera的Parameters对象; - 通过
Parameters的getMaxNumFocusAreas和getMaxNumMeteringAreas获取到最大可设置的对焦区和测光区数目,如果是0,则不支持对焦/测光区设置。(一般手机前置摄像头只支持测光区设置,后置摄像头可支持对焦和测光区设置); - 设置
Parameters的对焦区和测光区(setFocusAreassetMeteringAreas)。
这些调用系统API的步骤并不难,难点在于如何计算对焦区域/测光区域,即如何将用户在界面上的触摸点坐标转化成能直接被Camera利用的区域,特别是横竖屏切换、画面镜像翻转的场景下。
第一我们要了解摄像头硬件的图像传感器默认方向是左横屏,而我们正常的手机使用方向是竖屏的。

同时要了解Camera.Area的坐标系是这样的:

一句话概括下,就是需要将触摸点的坐标转化成Camera.Area坐标系(左横屏)下的坐标。
如果空间想象能力优秀,在脑海天马行空一番大致就搞定;否则,拿出纸笔比划一下,也能搞定。
如果画面镜像,列如是前置摄像头自拍的场景,需要对最终计算出来的X坐标也做镜像处理。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容