首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览

Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关的技术,也看了Google提供的Camera2Basic调用示例,以及网上一部分代码,但都是在TextureView...于是实现一下几个功能: 获取摄像头数据,并手动绘制图像 随时开启/关闭预览 随时保存当前摄像头图像,即使在关闭预览情况下 Android Camera2接口   查阅了一些资料,Android Java...层由于从API21开始,已经废弃原Camera接口,所以这里采用Camera2接口。...这里把CamCap程序中的Camera2的调用顺序整理如下: ?...绘制图像 在绘制图像的时候,有个坑,那就是图像的旋转,这个是由于手机上的摄像头传感器的视野坐标,一般都是旋转了90度或270度的,所以,需要把摄像头采集到的画面,进行旋转,才能还原出正确的视野画面。

3K50

Android 端相机相关开发经验总结

是为Android 5.0(API level 21)及以上系统提供的,Camera2Api23继承自Camera2,是为Android 6.0(API level 23)及以上系统提供的。...,然后通知相关组件应对屏幕旋转的变化,例如对预览画面进行调整。...这里还有一个小细节,那就是如果是选择了Camera2,但是在启动相机的时候发现这个手机对Camera2的支持很弱怎么办?...拍摄帧数据可以生成位图文件,最终保存成.jpg或者.png等格式的图片。这里拍摄帧数据对应的图像称作相机拍摄图像。...一定是他旋转了图片!”。结果一问后台同学,他说,“我不会旋转图片的,不是我的锅”,然后没有再回复你了。此时此刻,你才焕然大悟,想到了三星手机那个一直存在的bug,拍照得到的图片会自动旋转90!

3.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

Camera development experience on Android

是为Android 5.0(API level 21)及以上系统提供的,Camera2Api23继承自Camera2,是为Android 6.0(API level 23)及以上系统提供的。...,然后通知相关组件应对屏幕旋转的变化,例如对预览画面进行调整。...这里还有一个小细节,那就是如果是选择了Camera2,但是在启动相机的时候发现这个手机对Camera2的支持很弱怎么办?...拍摄帧数据可以生成位图文件,最终保存成.jpg或者.png等格式的图片。这里拍摄帧数据对应的图像称作相机拍摄图像。...一定是他旋转了图片!”。结果一问后台同学,他说,“我不会旋转图片的,不是我的锅”,然后没有再回复你了。此时此刻,你才焕然大悟,想到了三星手机那个一直存在的bug,拍照得到的图片会自动旋转90!

1.3K30

Android开发笔记(一百八十一)使用CameraX拍照

Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深...CameraX基于camera2开发,它提供一致且易用的API接口,还解决了设备兼容性问题,从而减少了编码工作量。...构建预览对象Preview,指定预览的宽高比例; 4、构建摄像头选择器对象CameraSelector,指定使用前置摄像头还是后置摄像头; 5、构建图像捕捉器对象ImageCapture,分别设置捕捉模式、旋转角度...ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY) // 设置捕捉模式 .setTargetRotation(rotation) // 设置旋转角度...return mPhotoPath; } // 开始拍照 public void takePicture() { mPhotoPath = String.format("%s/%s.jpg

1.5K20

微信小程序接入百度OCR(身份证识别)

.接口描述 支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限,识别准确率超过99%;同时支持身份证正面头像检测,并返回头像切片的base64...application/x-www-form-urlencoded Body中放置请求参数,参数详情如下: 请求参数 参数 是否必选 类型 可选值范围 说明 image 是 string - 图像数据,base64...编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式 id_card_side 是...string front/back front:身份证含照片的一面;back:身份证带国徽的一面 detect_direction 否 string true/false 是否检测图像旋转角度,默认检测...朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括: - true:检测旋转角度; - false:不检测旋转角度。

11.5K20

Android Camera2 实现触摸对焦功能(Touch to Focus)

之前在 Android Camera2 简介 这篇文章中简单介绍了下 Camera2 中 AF/AE 对焦区域如何进行设置,之前是通过手动计算对应关系实现的,但这种方式需要考虑到前后摄的区别,前摄和后摄坐标映射有区别...来进行确定 使用Matrix进行坐标映射 Camera API 1 关于API 1的坐标映射, 可以参考Android源码中Camera代码, 路径: packages/apps/Camera2/src...-1 : 1, 1); // 旋转, 从上面的坐标图可以看出, 预览和底层坐标有夹角 transform.postRotate(displayOrientation); //...; import android.graphics.Rect; import android.graphics.RectF; import android.hardware.camera2.CameraCharacteristics...-1 : 1, 1) 将预览坐标旋转对应角度,使之和Camera Driver坐标长宽对应 transform.postRotate(-sensorOrientation) 将当前的Matrix操作作用于预览对应的矩阵上

2.8K20

Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行...,可以在Java层通过Camera2获取数据,也可以用NativeCamera通过NDK来获取,不过后者需要的版本高一些,我考虑了一下,还是决定通过Java层获取数据,然后再交给下层处理。...关于Camera2接口获取摄像头数据,可以参考之前的文章“Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览”,不同的是,那篇文章里直接使用ImageReader的Surface...首先要生成一个OES SurfaceTexture,后面要把它传递给Camera2接口,用于接收摄像头画面,之后开始创建RTMP推流模块调用线程,并创建摄像头捕获模块,和渲染模块 ?...2 当OESTexture画面有效之后,获取摄像头画面的实际分辨率,以及旋转矩阵,画面旋转信息等,封装在一起,交给EGLRender,通知渲染模块进行画面渲染 ?

2.1K60

图像处理: 无损地旋转图像

/girl.jpg") h, w = img.shape[:2] center = (w // 2, h // 2) # 逆时针-90°(即顺时针90°)旋转图片 M = cv2.getRotationMatrix2D.../rotated_img.jpg", rotated_img) 处理后的结果: 可以明显看出,原图像左右两边的像素信息(黄色框内)全部丢失,损失严重: 无损旋转 我自己想到了一种无损旋转的方法.../girl.jpg") 获取输入图像的信息,生成旋转操作所需的参数: h, w = img.shape[:2] padding = (w - h) // 2 center = (w // 2, w.../girl.jpg") cv2.imshow("", img) cv2.waitKey(1000) # 获取输入图像的信息,生成旋转操作所需的参数(padding: 指定零填充的宽度; canter:.../img_padded.jpg", img_padded) # 逆时针-90°(即顺时针90°)旋转填充后的方形图片 M = cv2.getRotationMatrix2D(center, -90,

2.6K30

Android RTMP】NV21 图像旋转处理 ( 问题描述 | 图像顺时针旋转 90 度方案 | YUV 图像旋转细节 | 手机屏幕旋转方向 )

NV21 图像格式数旋转方案 3. 旋转图像的 饱和度 色彩值 UV 4. 旋转后的 NV21 格式 三、 Android 手机端屏幕旋转方向 1. 获取手机屏幕方向 2....Camera 采集画面并预览推流 : 这里注意 , 之前图像被逆时针旋转了 90 度 , 设置了图像传感器角度后 , 预览图片纠正过来了 , 但是 Camera 的图像传感器采集的 NV21 格式的图像还是被旋转了...电脑端观看直播效果展示 : 屏幕画面被逆时针旋转了 90 度 , 这是因为之前摄像头传感器只设置了将预览画面纠正过来 , 但是 NV21 格式的图像数据还是被逆时针旋转了 90 度的数据 ; 具体涉及到的图像格式..., 以及图像传感器方向 , 屏幕方向的关系 , 参考博客 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请...图像旋转问题及解决方案 ( 顺时针旋转 90 度 ) 图像旋转问题及解决方案 : ① 问题描述 : 分析上面的画面 , 可以看到视频被逆时针旋转了 90 度 , 即画面图像被逆时针旋转了 90 度 ;

5.9K10

【数字图像处理】旋转图像的几种方法

今天介绍两种旋转图像的方法 OpenCV 方法 OpenCV 中带有一个旋转图像的函数 cv2.rotate rotate(src, rotateCode[, dst]) -> dst 参数: src...:顺时针 180 度 或者 逆时针 90 度 dst:输出的结果 OpenCV 实现程序如下: import numpy as np import cv2 img = cv2.imread("Rc8gJko9yb71al.jpg...numpy 方法 numpy 中也提供一种旋转图像或者矩阵的方法 np.rot90 顾名思义就是选择多少个 90 度,与 OpenCV 中实现不同的是,numpy 的这个函数是逆时针旋转的,其函数说明如下...: np.rot90(m, k=1, axes=(0, 1)) 参数:m:输入的矩阵或者图像 k:逆时针旋转多少个 90 度,k 取 0、1、2、3 分别对应逆时针旋转 0 度、90 度、180 度、270...numpy 实现程序如下: import numpy as np import cv2 img = cv2.imread("Rc8gJko9yb71al.jpg") rot_90 = np.rot90

5.1K40

Android CameraX 知识点

2 CameraX 和 Camera2的区别 Android 现在使用相机主要是通过CameraX和Camera2。常见应用的开发使用CameraX库调用相机就可以了。...因为CameraX 比Camera2简单,简单,简单。 很多功能都直接封装到api里面了方便我们调用,同时兼容性也高。 CameraX是基于Camera2软件包构建的。...那么Camera2就是我们的最优选择。 原先使用相机,需要自己配置很多选项。并且要注意相机对象和预览数据的释放等,配置繁琐。...支持Android API 21 及以上版本,覆盖现有Android设备的98%以上。(数据是官方提供的,更低版本不支持) 易用性高:直接处理封装了预览,图片分析,图片拍摄,视频拍摄。...兼容性强:不管什么设备,图片的宽高比,旋转角度,大小等全部封装统一了。 扩展性好:提供Extensions API可以实现与原生相机应用相同的特性和功能。 也就是我们可以不用管相机的配置和销毁。

1.4K20

Android相机应用基本功能实现

前言 文章传送门: Android:调用系统相机实现拍照+裁切(兼容7.0以上系统) Android: Camera相机开发详解(上) —— 知识储备 Android: Camera相机开发详解(中)...——实现预览、拍照、保存照片等功能 Android: Camera相机开发详解(下) —— 实现人脸检测功能 Camera2架构概述 Camera2引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送...Camera2预览流程图 Camera2拍照流程图 Camera2录像流程图 Camera2中比较重要的类及方法 CameraManager 摄像头管理器,用于打开和关闭系统摄像头 getCameraIdList...<TextureView android:id="@+id/textureView" android:layout_width="match_parent" android:layout_height...在android 5.0,硬件兼容级别为legacy时,Camera2输出的宽高比和Camera Sensor保持一致。

1.8K31

计算机视觉:6.2~6.5 图像的基本变换与仿射变换

ROTATE_90_COUNTERCLOCKWISE:90度逆时针 # 图像的旋转 import cv2 import numpy as np # 读取图片 dog = cv2.imread('....getRotationMatrix2D(center, angle, scale) center:中心点,以图片的哪个点作为旋转时的中心点; angle:角度,旋转的角度,按照逆时针旋转; scale...:缩放比例,对图片进行缩放; # 除了平移,仿射矩阵还可以完成图像的旋转 # 旋转同样需要进行矩阵计算,为了方便计算旋转矩阵 # 使用getRotationMatrix2D方法可以获得想要的旋转矩阵 import.../dog.jpg') h, w, ch = dog.shape # 获取变换矩阵,逆时针45度转动并缩放至0.7倍 M = cv2.getRotationMatrix2D((w/2, h/2), 45.../dog.jpg') h, w, ch = dog.shape # 顺时针旋转90度后的起止三个点的坐标 src = np.float32([[0,0], [100,0], [0,100]]) dst

72410

视频直播技术--Android视频采集(Camera1)

camera1.jpg 前言 今天为大家介绍一下使用Camera1进行视频采集。之前我写过一篇文章介绍的是Camera2进行视频采集。那么有人会问,为什么有了Camera2还要介绍Camera1呢?...这里最主要的原因是因为Android版本众多,Camera2是Google新推出的视频采集架构,但很多老的机型还不支持,所以为了兼容性的问题,我们还不能放弃使用Camera1进行视频的采集。... 第二步,动态申请Camera权限。...AndroidAndroid 6.0后,对根限的管理更严格了,除了上面要静态申请权限外,还要通过调用 requestPermissions 函数动态申请Camera权限。...参考 视频渲染之EGL Android视频采集Camera2 http://www.jianshu.com/p/39a015f2996e ----

5.2K41

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券