android 预览和拍照成像方向不一致,Android相机预览方向深入探究

原标题:Android相机预览方向深入探究

今日快讯

9月7日,北京市交通委召集各区管理部门和15家共享自行车企业负责人,听取共享自行车投放和管理的意见建议,研究决定并下发通知,暂停在本市新增投放共享自行车。摩拜单车和ofo小黄车表示对于北京市交通委提出的加强共享单车管理、维护市容市貌的举措表示积极拥护和全力支持。

作者简介

转眼来到了周五,祝大家周末愉快!

本篇来自 IT小蔡的投稿,分享了 Android 相机预览方向相关的内容,希望大家喜欢!

IT小蔡的博客地址:

http://blog.csdn.net/cai784921129

前言

以前对 Camera 了解的不是太深入,最近有需求把人脸识别 集成到项目,必然会与 Camera打交道,遇到一些坑,与大家分享一下。

预览方向

首先理解一下 info.orientation 官方解释

官方定义:orientation 表示相机图像的方向。它的值是相机图像顺时针旋转到设备自然方向一致时的角度。例如假设设备是竖屏的。后置相机传感器是横屏安装的。当你面向屏幕时,如果后置相机传感器顶边的和设备自然方向的右边是平行的,则后置相机的 orientation 是 90。如果前置相机传感器顶边和设备自然方向的右边是平行的,则前置相机的 orientation 是 270。

画了一个简单的草图,我用两部手机进行测试,一部是华为荣耀 6plus 、另一个是定做的 T6A,测试的时候把手机固定为了竖屏应用

8763c90605628ea341db31b9020a11bb.png

另一款 Android 机 T6A ,摄像头位置比较特别,我获取的 info.orientation = 0; 那意味着我不用旋转,捕获的数

从IMX214传感器驱动到ISP处理:嵌入式视觉系统开发全解析 图像传感器是现代视觉系统的核心,其工作原理基于CMOS技术,通过感光二极管将光子转换为电信号。堆栈式结构通过分离感光层与电路层,极大提升了感光效率与电路设计自由度,是当前中高端传感器的技术基石。相位检测自动对焦技术则通过模拟单反相机的相位检测原理,实现了快速、准确的对焦,显著提升了拍摄体验。这些技术的工程价值在于为嵌入式设备提供了高性能、低功耗的视觉感知能力,广泛应用于智能手机、安防监控、自动驾驶及物联网设备。本文以索尼IMX214这一经典堆栈式传感器为例,深入剖析其寄存器配置、Linux V4L2驱动开发 阅读详情

相关推荐

Android 11.0 Camera2退出时屏幕旋转为横屏

在11.0的系统rom产品定制化开发中,在默认横屏的产品中,由于Camera2是固定竖屏的系统应用,在但是在进入Camera2相机时变成竖屏,退出相机时,还是竖屏,对于横屏的机器来说不太符合要求, 所以要求在退出相机时,旋转为横屏,这就需要知道哪个api监听Camera2 退出了,然后在旋转横屏就可以了,这样就变成横屏了,虽然不是很好,但也是目前的一种解决问题的方法

安卓兼职framework和app工程师的博客 757

Android摄像头预览镜像翻转问题解决方案及示例代码

这是因为在摄像头硬件层面,图像传感器采集到的图像是镜像的,为了保持图像在预览界面上与用户的视觉习惯一致,Android系统会默认对图像进行翻转显示。另外,确保在使用摄像头功能时,已经获取了相应的权限,并且正确处理摄像头的打开、关闭和释放等操作,以避免可能的错误和资源泄漏。通过使用Matrix进行图像矩阵变换或使用TextureView进行图像镜像翻转,我们可以解决Android摄像头预览图像镜像翻转的问题。在使用Android开发中,涉及到摄像头预览的功能时,有时候我们会遇到预览图像镜像翻转的问题。

KnBackend的博客 3284

深入剖析Android 4.0.3相机源码及其应用

Android平台以其开源特性和灵活的硬件抽象层(HAL)设计理念,为开发者提供了丰富的照相机应用程序开发空间。在深入探究具体的Camera服务框架、Camera Provider Manager、Camera Service核心操作方法及Camera HAL等组件之前,理解整个照相机源码的基础结构和功能是至关重要的。Android 4.0.3版本的照相机源码是早期Android照相机开发的代表作,它为现代移动设备的成像系统奠定了基础。

weixin_36047538的博客 1099

Android 调用前摄像头拍照存储,根据打开时横竖屏切换preview

android调用camera时,可以自己写一个activity,赋上相关参数,打开前camera就可以了; 需要申请的permission,在AndroidManifest.xml中添加: 主要功能,打开前camera private Camera openFrontFacingCameraGingerbread() { int cameraCount = 0; Camera cam = null; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.getNumberOfCameras(); for (int camIdx = 0; camIdx < cameraCount; camIdx++) { Camera.getCameraInfo(camIdx, cameraInfo); if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { try { cam = Camera.open(camIdx); mCurrentCamIndex = camIdx; } catch (RuntimeException e) { Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage()); } } } return cam; } 根据打开时的横竖屏方向来调整preview角度 //根据横竖屏自动调节preview方向,Starting from API level 14, this method can be called when preview is active. private static void setCameraDisplayOrientation(Activity activity,int cameraId, Camera camera) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(cameraId, info); int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); //degrees the angle that the picture will be rotated clockwise. Valid values are 0, 90, 180, and 270. //The starting position is 0 (landscape). int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } int result; if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else { // back-facing result = (info.orientation - degrees + 360) % 360; } camera.setDisplayOrientation(result); }

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本)

本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。

f9g0h的博客 463

SPD-Conv+YOLOv8:空间深度转换卷积赋能小目标检测,从原理到实战的科研级优化指南

从理解SPD-Conv“空间到深度+逐步卷积”的核心设计,到亲手将其嵌入YOLOv8并验证在小目标场景的表现,再到基于此探索属于自己的科研与工程方向——这个过程能让你深刻理解“小目标特征保留”在检测任务中的核心价值。现在就开始行动,相信你会在小目标检测的“细节捕捉”之路上,走出一条属于自己的技术路径。实验通常会证明:嵌入SPD-Conv后,YOLOv8在小目标AP上提升5-8个百分点,mAP50-95提升3-5个百分点,而推理速度仅下降5%以内,充分体现了其“保细节+提精度”的优势。

m0_64661770的博客 159

银河麒麟V10等保加固清单:安全基线配置一篇搞定(附逐项检查表)

通过限制使用SSH直接以root身份登录,禁用公钥登录的方式加强SSH服务的安全性。更改SSH默认端口可在一定程度上防止被黑客使用大批量扫描方式攻击。通过修改SSH的配置文件限制可以使用SSH服务远程管理的主机。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 811

芒果YOLO11改进146:OBB旋转检测头Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

OBB旋转检测头Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 629

8、内存交织技术详解

本文详细解析了内存交织技术的基本原理、工作机制及实现方式,探讨了其在提升内存访问速度和系统性能中的关键作用。文章还分析了内存交织的优缺点、实际应用场景以及与其他优化技术的结合应用,并提出了未来发展的可能方向,为理解与运用该技术提供了全面参考。

g9h0i1的博客 540

115网页版VR模式终于能用了!电脑直接播放vr视频沉浸感满满 115vr播放 无需vr头盔播放vr视频 在线vr播放器 115网盘360度视频播放方法 115全景视频播放教程

油猴 + 脚本让你网页端直接开启 VR 模式支持 360 视频拖动视角,非常沉浸适合电脑设备直接用无需vr头盔也能轻松畅看vr视频,希望也能帮到你。如果你也被 115 的限制搞烦了,不妨试试这招。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 5678

dy创作者平台上传并发布视频

整体上来说不是很难,就是过程有点复杂。因为这个是别人给的单子,所以这里不放源码了。细致一点就可以搞定。如果要Signature算法,可私信,不免费。

记录一些web逆向的过程 1511

一文看懂 SAP Integration Suite:从架构治理、接口编排到事件驱动的集成全景

SAP Integration Suite是企业数字化转型中的关键集成平台,通过统一的方法论和工具链解决系统互联、数据对齐和流程协同等复杂问题。其核心能力包括:1)集成评估(Integration Assessment)提供战略规划框架;2)迁移评估(Migration Assessment)支持从传统平台向云的平滑过渡;3)云集成(Cloud Integration)实现日常业务流程编排;4)集成顾问(Integration Advisor)简化B2B标准映射;5)贸易伙伴管理(TPM)优化外部协作流程;

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 496

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 51c语言字符是什么,什么是C语言中的宽字符与多字节字符
下一篇: android长按复制功能吗,分别使用vue和Android实现长按券码复制功能
Mark大叔
博客等级 码龄7年 37粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值