一 Camera 内部类 CameraInfo

CameraInfo类用来描述相机信息,通过Camera类中getCameraInfo(int cameraId, CameraInfo cameraInfo)方法获得,主要包括以下两个成员变量:

facing
facing 代表相机的方向,它的值只能是
CAMERA_FACING_BACK(后置摄像头)
CAMERA_FACING_FRONT(前置摄像头)。

CAMERA_FACING_BACK 和 CAMERA_FACING_FRONT 是CameraInfo类中的静态变量

orientation
orientation是相机采集图片的角度。这个值是相机所采集的图片需要顺时针旋转至自然方向的角度值。它必须是0,90,180或270中的一个。
举个栗子:
假如你自然地竖着拿着手机(就是自拍时候的样子…),后置摄像头的传感器在手机里是水平方向的,你现在看着手机,如果传感器的顶部在自然方向上手机屏幕的右边(此时,手机是竖屏,传感器是横屏),那么这个orientation的值就是90。 如果前置摄像头的传感器顶部在手机屏幕右边,那么这个值就是270.

setDisplayOrientation()
设置预览画面顺时针旋转的角度。这个方法会影响预览图像和拍照后显示的照片。这个方法对竖屏应用非常有用。
注意,前置摄像头在进行角度旋转之前,图像会进行一个水平的镜像翻转。
所以用户在看预览图像的时候就像照镜子,看到的是现实的水平方向的镜像

注:setDisplayOrientation(int degrees)是Camea类中的一个方法,之所以穿插在这里来讲,是为了和上面提到的orientation做一个统一讲解,因为这两个都涉及到了方向问题

相信很多人都会搞混相机角度和预览角度;下面给小伙伴们详细介绍一下Android手机上几个方向的概念以及在使用Camera过程中会遇到的方向问题:

注:如果你是第一次使用Camera的话,首先要了解以下几点:

  • 相机图像数据都是来自于相机硬件的图像传感器(Image Sensor),这个Sensor被固定到手机之后是有一个默认的取景方向,且不会改变

  • 相机在预览的时候是有一个预览方向的,可以通过setDisplayOrientation()设置

  • 相机所采集的照片也是有一个方向的(就是上面刚刚提到的orientation),这个方向与预览时的方向互不相干(就是我们说的相机角度,模式是水平的,相当于我们的手机横屏)

屏幕坐标: 在Android系统中,屏幕的左上角是坐标系统的原点(0,0)坐标。原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向

自然方向:每个设备都有一个自然方向,手机和平板的自然方向不同。手机的自然方向是portrait(竖屏),平板的自然方向是landscape(横屏)

图像传感器(Image Sensor)方向:手机相机的图像数据都是来自于摄像头硬件的图像传感器,这个传感器在被固定到手机上后有一个默认的取景方向,如下图所示

相机的预览方向:将图像传感器捕获的图像,显示在屏幕上的方向。在默认情况下,与图像传感器方向一致。在相机API中可以通过setDisplayOrientation()设置相机预览方向。在默认情况下,这个值为0,与图像传感器方向一致(预览其实就是我们看到的画面)

再来个箭头的图像帮助大家理解:

后置摄像头orientation=90,此时图像传感器采集图像的方向90度,相对于自然方向,如下:

此时图像采集的方向我们是无法改变的,但是能够改变预览的方向,通过setDisplayOrientation(90)顺时针旋转预览方向,以便在自然方向进行正确预览。

我们来看看前置摄像头orientation=270的情况,铭记前置摄像头预览方向在旋转之前会进行一个水平镜像翻转(可以理解为逆时针旋转180),这就是为什么我们通过手机前置摄像头预览时,看到的像是在照镜子一般。

此时我们需要将获取到的图片数据进行顺时针旋转270度,才能够在手机自然方向正确预览。接下来看看前者摄像头预览方向,注意咯

二 ZXing如何计算预览角度

因为摄像头传感器的角度是固定水平的,但是我们可以调整预览角度,达到与摄像头传感器互相适配的效果(就是自然方向看到的图像)

ZXing扫码流程——相机角度和预览角度相关推荐

  1. Zxing扫码库优化思路

    /   今日科技快讯   / 近日,抖音直播发布<抖音关于打击直播诈骗黑色产业链的公告>.公告称,为进一步保障用户及平台安全,抖音下阶段将重点推进MCN治理.帐号治理等专项行动.同时,将于 ...

  2. JavaCV音视频开发宝典:使用JavaCV读取海康平台或海康网络摄像头sdk回调视频TS码流并解析预览图像

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 ​ 前言 两年前博主写了如何利用JavaCV解析各种h264裸流,<JavaCV ...

  3. 亲测修复支付网关早起打卡源码/带教程/支付已接/优化扫码流程

    简介: 好友分享的,H5早起打卡,具体的模式就不过多介绍了,应该大家都对这款有印象,这款之前有发过,当初搞完这款之后,平台的网关地址换了,前天之前的会员朋友下载搭建后反应了这个问题,跟他解释也没解释通 ...

  4. Android Camera预览角度和拍照保存图片角度学习

    1 Camera预览角度处理 开发Camera过程中会遇到Camera拍照,获取照片后可以上传照片或者展示给用户. Camera的图像数据来源于摄像头硬件的图像传感器,这个图像传感器被固定到手机上后会 ...

  5. Android zxing扫码截彩色图

    不得不说这个过程看上去简单,实际上写到我差不多一个星期的时间,由于超出预定时间,此功能被放弃,出于对技术的追求,于是继续写,终于被我弄出来. 其实两种方法的本质都是通过byte[]data获取数据,通 ...

  6. 【微信小程序】图片选择、转码、压缩、预览、上传,file与base64

    0 前言 微信小程序中,上传图片,如标题,涉及图片选择.图片转码.图片压缩.图片预览.图片上传等 1 图片选择 需要使用微信提供的wx.chooseMedia chooseImage() {var t ...

  7. php 502状态码,PHPstorm浏览器打开预览出现502状态码,怎么办?

    最近不少同学在安装phpstorm软件时遇到问题,PHPstorm使用浏览器预览时出现502状态码.下面就给大家详细介绍如何解决这个问题. 未配置前: 1.首先我们打开PHPstorm后可以先点击文件 ...

  8. android zxing扫码 生成二维码

    zxing 实现生成二维码,扫码 demo:https://download.csdn.net/download/chengtaoyan/11170917

  9. 【Android】zxing扫码识别及生成二维码

    在我们的生活场景中扫码已经无处不见了,微信加好友,分享......甚至在骗子的骗术里面都加入二维码这个东西.还是想在这里提醒大家不要看着什么扫描二维码抢红包,领礼品,就急急忙忙的拿起手机去扫. 今天让 ...

最新文章

  1. 升级Jekyll 3.0
  2. 《MySQL——幻读与next-key lock与间隙锁带来的死锁》
  3. UVA - 1643 Angle and Squares (角度和正方形)(几何)
  4. 【QA5】【mysql问题】ERROR 1045 (28000): Access denied for...
  5. Centos6.5 安装Vim7.4
  6. 判断图像局部过暗_数字图像处理(第五章)
  7. HaLow技术提升车载Wi-Fi质量 促进车联网发展
  8. 【IJCAI2019】中国团队占 38%,北大南大榜上有名
  9. 跨境移动互联网的魅力演绎,hao123无论成就下一个条目?
  10. 企业成本核算程序是怎样?一般采用什么方法
  11. 高斯消元法求逆矩阵 matlab,高斯消元法与矩阵求逆
  12. [蓝桥杯]java实现第39级台阶
  13. Kubernetes版本对接对象存储几种方案
  14. Oracle错误08s01,Java7 sqljdbc4 – getConnection()上的SQL错误08S01
  15. 查看caj文件与chm文件
  16. 把模糊MATLAB波形的图变清晰,什么修图软件能把模糊图片清晰化?
  17. Jim Joseph加入Burson Cohn Wolfe,担任新设立的全球职位
  18. 深度之眼Paper带读笔记GNN.09.GGNN
  19. ffmepeg截取视频片段
  20. LeetCode 面试题 峰与谷

热门文章

  1. [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7
  2. 记一次数据库实验 -- 数据库的基本使用
  3. Tern – 字幕组机翻小助手:自动翻译英文字幕为中英双语字幕[Win/macOS]
  4. 三种循环结构+训练题
  5. LoadRunner12.55版本安装
  6. Beaglebone Black学习(一)
  7. 【解决】addEventListener监听滚动与removeEventListener移除监听阻止冒泡(e.preventDefault())不生效
  8. 第二届“强网”拟态防御国际精英挑战赛:背后的男人们!
  9. 旧款iPhone在德国下架对苹果是又一个重大打击
  10. CAD修一个标注长度,标注的直线也跟着变化(com接口)