iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android Camera实现旋转角度
  • 161
分享到

Android Camera实现旋转角度

2024-04-02 19:04:59 161人浏览 薄情痞子
摘要

本文实例为大家分享了Android Camera实现旋转角度的具体代码,供大家参考,具体内容如下 概述 相机图像数据都是来自于图像传感器(Image Sensor),相机模

本文实例为大家分享了Android Camera实现旋转角度的具体代码,供大家参考,具体内容如下

概述

相机图像数据都是来自于图像传感器(Image Sensor),相机模组出厂的时候有一个默认的取景方向,一般为以下两种,请留意相机模组中小人的方向

  • Sensor 安装默认都是 Sensor 的长边与手机的长边平行
  • 将上述图1的模组装入手机,结果为下图

  • 两颗模组不一定如图左右摆放,也可以上下摆放,只要遵循长边对长边即可
  • 此时使用后摄预览或拍照,取景方向是正常的,而手机目前相对自然方向(正常竖屏使用状态)顺时针夹角为90度,这也就是常说的 Sensor orientation 是90度

将上述图2的模组装入手机,结果为下图

  • 两颗模组不一定如图左右摆放,也可以上下摆放,只要遵循长边对长边即可
  • 此时使用后摄预览或拍照,若要使取景方向正常,需将手机顺时针旋转180度,此时手机相对自然方向(正常竖屏使用状态)顺时针夹角为270度,这也就是常说的 Sensor orientation 是270度

旋转角度规律

  • 以下说明以 Sensor orientation 90度为例(大多数sensor都是该情况)
  • 屏幕显示旋转角度:Activity#getWindowManager().getDefaultDisplay().getRotation()的值,可以是 ROTATION_0(正常竖屏使用状态)、ROTATION_90(手机向右侧放)、ROTATION_180(手机竖屏倒置)、ROTATION_270(手机向左侧放)
  • 以屏幕角度 ROTATION_180且使用后摄为例,其他情况类比推理

当前情况下图1模组中的小人头部朝向左边,有两种方式判断当前sensor取景后图像方向

简单方式:跟随小人的视角去看实际被拍摄的物体(假设为正常站立的人),所看到的景象是头部向右横置的人,此时若要使看到的图像恢复为正常情况,则需要将图像顺时针旋转270度

复杂方式:sensor扫描方向遵从小人头部左侧顶点向右扫描,当前情况下也就是从左下向上逐行扫描,然后依次存储到内存中,存储为图片的时候是水平从左向右存储,导致存储后的图像是头部向右横置的人,若要使图像被拍摄后为正常情况,则需要将图像顺时针旋转270度

代码实现

Camera API1(官方实现)

public static void setCameraDisplayOrientation(Activity activity, int cameraid, android.hardware.Camera camera) {
    android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
    android.hardware.Camera.getCameraInfo(cameraId, info);
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    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);
}

Camera API2

Camera api2 不需要经过任何预览画面方向的矫正,就可以正确现实画面,因为当使用 TextureView 或者 SurfaceView 进行画面预览的时候,系统会自动矫正预览画面的方向

private static final SparseIntArray ORIENTATIONS = new SparseIntArray();

// Conversion from screen rotation to JPEG orientation.
static {
    ORIENTATIONS.append(Surface.ROTATION_0, 90);
    ORIENTATIONS.append(Surface.ROTATION_90, 0);
    ORIENTATIONS.append(Surface.ROTATION_180, 270);
    ORIENTATIONS.append(Surface.ROTATION_270, 180);
}


private int getOrientation(int rotation) {
    // Sensor orientation is 90 for most devices, or 270 for some devices (eg. Nexus 5X)
    // We have to take that into account and rotate JPEG properly.
    // For devices with orientation of 90, we simply return our mapping from ORIENTATIONS.
    // For devices with orientation of 270, we need to rotate the JPEG 180 degrees.
    return (ORIENTATIONS.get(rotation) + mSensorOrientation + 270) % 360;
}

final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android Camera实现旋转角度

本文链接: https://www.lsjlt.com/news/164722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android Camera实现旋转角度
    本文实例为大家分享了Android Camera实现旋转角度的具体代码,供大家参考,具体内容如下 概述 相机图像数据都是来自于图像传感器(Image Sensor),相机模...
    99+
    2022-11-13
  • OpenCV实现绕图片中任意角度旋转任意角度
    最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是向下面这样写的: 绕图片中心...
    99+
    2022-11-13
  • opencv图片的任意角度旋转实现示例
    目录一 旋转角度坐标的计算二 旋转任意角度的步骤三 实现一 旋转角度坐标的计算 1.如果O点为圆心,则点P绕点O旋转redian弧度之后,点P的坐标变换为点Q的计算公式为: Q.x=...
    99+
    2022-11-12
  • nodejs获取图片旋转角度
    随着移动设备和相机的普及,我们经常需要通过程序对图片进行处理。其中,图片的旋转是一个非常常见的需求。在本文中,我们将介绍如何使用 Node.js 获取图片的旋转角度。准备工作在开始之前,需要确保已经安装并配置好了 Node.js 环境。另外...
    99+
    2023-05-14
  • css如何让字体旋转角度
    在css中实现旋转字体角度的方法:1.创建p标签;2.使用transform属性设置字体旋转;在css中实现旋转字体角度的方法首先,在页面中创建两个p标签,并添加文字用于对比;<!DOCTYPE html><ht...
    99+
    2022-10-16
  • css怎么设置字体旋转角度
    这篇文章主要讲解了“css怎么设置字体旋转角度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css怎么设置字体旋转角度”吧!首先,在页面中创建两个p标签,并添加文字用于对比;<!DOC...
    99+
    2023-07-04
  • Android实现旋转动画
    本文实例为大家分享了Android实现旋转动画的具体代码,供大家参考,具体内容如下 旋转动画(可加速、减速) 1、准备工作 首先需要有一个用于旋转的图片 需要考虑如何开始、结束、加速...
    99+
    2022-11-12
  • 解决unity rotate旋转物体 限制物体旋转角度的大坑
    今天可是遇到一个很简单的需求,但是却让我蛋疼了半天。 滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间。 乍一听这简直是小儿科啊。 判断一下角度不就行了。相比这四元数,欧拉角...
    99+
    2022-11-12
  • css3中如何用rotate设置旋转角度
    今天小编给大家分享一下css3中如何用rotate设置旋转角度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • css中如何设置文字旋转角度
    本篇内容介绍了“css中如何设置文字旋转角度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • AndroidApp获取屏幕旋转角度的方法
    本文实例为大家分享了Android App获取屏幕旋转角度的具体代码,供大家参考,具体内容如下 一、获取屏幕旋转角度的方法是:int rotation = mActivity.get...
    99+
    2022-11-13
  • 【android】用camera实现vi
       使用Camera实现3D变换效果 最后来简单介绍下android提供的android.graphics.Camera类,通过该类可以在2D条件下实现3D动画效果,该类可以看做一个视图显示的3D空间,然后可以在里面做各种操作。把上面...
    99+
    2023-01-31
    android camera vi
  • Android实现简单旋转动画
    本文实例为大家分享了Android实现简单旋转动画的具体代码,供大家参考,具体内容如下 核心方法 public void startAnimation(Animation anima...
    99+
    2022-11-13
  • Android如何实现旋转动画
    本篇内容主要讲解“Android如何实现旋转动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何实现旋转动画”吧!1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、...
    99+
    2023-06-26
  • Android自定义控件实现温度旋转按钮效果
    首先看下效果图 温度旋转按钮 实现思路 初始化一些参数 绘制刻度盘 绘制刻度盘下的圆弧 绘制标题与温度标识 绘制旋转按钮 绘制温度 处理滑动事...
    99+
    2022-06-06
    按钮 Android
  • Android实现Bitmap位图旋转效果
    位图的旋转也可以借助Matrix或者Canvas来实现。 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最...
    99+
    2022-06-06
    bitmap Android
  • android实现icon动态旋转效果
    本文实例为大家分享了android实现icon动态旋转效果的具体代码,供大家参考,具体内容如下 碰到客户的这样一个需求,点击icon后,前景的icon开始旋转,背景的icon不动,就...
    99+
    2022-11-13
  • Android中实现ProgressBar菊花旋转进度条的动画效果
    在一些常见到的加载中需要显示一个加载动画,如旋转的菊花,旋转的圈圈等等动画…,然后我们现在就来说下怎么去试下它吧 一.菊花的旋转动画 1.新建一个drawable文件 在res/d...
    99+
    2022-11-12
  • 超详细注释之OpenCV旋转图像任意角度
    上一篇博客介绍了 如何使用Python,OpenCV上下左右(或任意组合)平移图像。这篇博客将介绍如何使用OpenCV旋转图像任意角度。并演示如何使用imutils库中的两个函数im...
    99+
    2022-11-12
  • Android利用Camera实现中轴3D卡牌翻转效果
    在Android系统API中,有两个Camera类: android.graphics.Camera android.hardware.Camera 第二个应用...
    99+
    2022-06-06
    3d Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作