本篇介绍 回顾下Camera1,使用起来需要开发关注很多细节,Camera2可以帮助开发自动处理很多细节,可是使用上就特别复杂,Android就提供了Camerax,既简单又好用,本篇介绍下使用方法。 使用步骤 申请权限 <uses-permission android:name="android.permission.CAMERA" /> 动态申请: private void requestPermission (); } } }, ContextCompat.getMainExecutor(this)); 这就是打开Camera,并且将采集数据渲染出来的全部代码了
[1240] 如果你曾经用过 Android 的 Camera APIs,你可能已经感受到了,它们一直没有成为最容易实现的东西。 配置 CameraX CameraX 由两个概念来完成实现 -- Camera View 和 Camera Core。 [1240] 首先在应用的 manifest 添加 Camera 权限: <uses-permission android:name="android.permission.CAMERA" /> 然后, 你可能注意到了,这里有两个不同的依赖: Camera Core 库为使用 CameraX 库提供了必要的类 CameraX Camera2 依赖提供了一些互操作功能所以我们能够在 CameraX 中集成一些已有的 我们能够在布局文件里直接添加这个组件: <androidx.camera.view.CameraView android:id="@+id/view_camera" android:layout_width
前言 主要是CameraX中一些关键知识点的汇总介绍。并不会完整介绍CameraX的使用。 更多的是一些概念和注意点,以及名词介绍等内容。 2 CameraX 和 Camera2的区别 Android 现在使用相机主要是通过CameraX和Camera2。常见应用的开发使用CameraX库调用相机就可以了。 将这一整套方法库封装成了CameraX,后来合并到Jetpack库中。 2.1 CameraX的特点: 总结一下CameraX的一些特点,一家之言。仅供参考。 支持Android API 21 及以上版本,覆盖现有Android设备的98%以上。(数据是官方提供的,更低版本不支持) 易用性高:直接处理封装了预览,图片分析,图片拍摄,视频拍摄。 1024 * 1024; setIFrameInterval():帧间隔,默认1; setAudioBitRate():音频比特率,默认为64000; setAudioSampleRate():音频采集频率
前言 接上一篇《Android CameraX NDK OpenCV(二)-- 实现Dnn人脸检测》,本篇我们直接在这个基础上做一个小玩意----人脸替换贴图,其实现在相机里很多都有这个功能了,这里就简单的实现一下 <TextView android:id="@+id/tvStatus" android:layout_width="wrap_content" android android:id="@+id/btnchange" android:layout_width="wrap_content" android:layout_height / mScaleWidth).toInt() + 10 p.bottom = (p.bottom / mScaleHeight).toInt() + 10 onDraw事件里针对每个一Rect矩形,我们都在原矩形的基础上再扩大10,所以除了位置偏移后再对每个点做了一个10的固定偏移,最后用drawBitmap画出图像就实现了贴图的效果。 ?
本文我们会向大家简要介绍 Android Jetpack 组件中的 CameraX 库,以及 Beta 版本中的更新。 : 用于解析相机采集到的数据流; ImageCapture: 用于拍摄高质量照片。 开始使用 CameraX Beta 并和我们一起改善用户在 Android 上的相机体验吧。 详细了解 CameraX,请参阅以下资源: 官方文档: developer.android.google.cn/camerax 官方示例代码 github.com/android/cam… Google Groups 讨论群租 groups.google.com/a/android.c… 我们也在去年的 Android 开发者峰会中与大家分享了 CameraX 库的介绍和用法,请查看下面的视频回顾:
前言 上一篇《Android CameraX NDK OpenCV(一)--实时灰度图预览》已经把Android下OpenCV的Ndk配置完成,并且实现了实时灰度图的显示,本篇来看看在Android下使用 GIF动图 视频效果 划重点 从上面的效果很仔细的话可以看到,我们检测人脸到画上红色矩形框时偶尔会有延时的情况,这个在《Android JetPack组件CameraX使用及修改显示图像》中说过,我们在摄像机预览中上层加入了 还要注意的一点是加载的人脸检测的模型文件,因为要在NDK中加载并初始化,所以在程序中我们要考虑怎么拷模型文件先复制到Android设备本地,然后调用JNI的方法去加载模型文件。 代码部分 ? faceDetect.Detect(src); if(outRects.size()>0){ jclass rect_jcls = env->FindClass("android
今天这篇主要是说说Android JepPack组件中CameraX的使用,其实网上也有不少简单的例子,本篇也是参考了网的一篇文章后实现的。 这个和我以前文章《Android通过OpenCV和TesserartOCR实时进行识别》直接在OpenCV中修改了图像后在通过SurfaceView显示是完全不一样的。 CameraX的使用 ? , android.R.color.holo_blue_light) strokeWidth = 10f textSize = 150f isFakeBoldText > <dem.vaccae.camerax.ViewOverLay android:id="@+id/viewOverlay" android:layout_width 通过上面的代码,一个简单的Camera的效果就实现了,可以看出来,用CameraX的调用,要比原来Camera写起来简单了好多,不过要注意一点是CameraX就是Camera2的封装,所以Android
——《微卡智享》 本文长度为5350字,预计阅读11分钟 前言 上一篇《Android JetPack组件CameraX使用及修改显示图像》已经实现了CameraX的相机预览使用,所以要结合OpenCV (android ndk方式)准备做点小东西,所以就先按最简单的实时灰度图显示来验证效果。 搭建环境 摄像机预览:JetPack CameraX OpenCV版本:4.5 NDK版本:21.1.6352462 CMake版本:3.10.2 开发语言:kotlin 实现效果 ? 直接将两个文件夹拷贝到了创建的android项目默认生成的libs的文件夹下。 02 OpenCV头文件 ? 调试中发现,ImageProxy中生成的图像默认是720*1280,上图中左上角的文字也显示了出来,而CameraX的预览里面Android内部已经把图像的缩放显示都集中进去了,所以我们如果直接按原图画上后
自定义相机滤镜 ),但是运行起来有点卡顿,这次用Camerax来实现一样的效果发现很流畅,在此记录一下,也希望能帮到有需要的同学。 实现效果 image.png 实现步骤 1.引入依赖库 这里我引入的依赖库有CameraX、GPUImage(滤镜库)、Utilcodex(一款好用的工具类) // CameraX core library using camera2 implementation implementation "androidx.camera:camera-camera2:1.0.1" // CameraX Lifecycle )里面的libyuv,如下 image.png 3.编写CameraX预览代码 布局代码如下 <? private const val TAG = "CameraXBasic" private const val REQUEST_CODE_PERMISSIONS = 10
通过CameraX实现录像功能的话,初始化相机的步骤与拍照时大同小异,区别在于增加了对视频捕捉器VideoCapture的处理。需要修改的代码主要有三个地方,分别说明如下。 -- 相机 --> <uses-permission android:name="android.permission.CAMERA" /> <! -- 录音 --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <! -- 存储卡读写 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission 点此查看Android开发笔记的完整目录
Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深 -- 相机 --> <uses-permission android:name="android.permission.CAMERA" /> <! android:name="android.permission.READ_EXTERNAL_STORAGE" /> 由于CameraX来自Jetpack库,因此要修改模块的build.gradle, 往dependencies节点添加以下几配置,表示导入指定版本的camerax库: // camerax库各版本见 https://mvnrepository.com/artifact/androidx.camera 点此查看Android开发笔记的完整目录
《Android NDK编程(七)--- JNI中List结构的类数据返回》文章中有简单的介绍过返回实体类的方式,在这里我们就用到了从JNI中返回列表实体的实现。 01 定义实体类 ? package lib.vaccae.opencv import android.graphics.Pointimport android.graphics.PointF /** * 作者:Vaccae pts_cls, "add", "(Ljava/lang/Object;)Z"); //定义实例化Point的方法 jclass pt_cls = env->FindClass("android
Android 相机开发中的尺寸和方向问题 https://glumes.com/post/android/android-camera-aspect-ratio-and-orientation/ Android Camera 模型及 API 接口演变 https://glumes.com/post/android/android-camrea-api-evolution/ 对于一个简单能用的 Camera :camera-camera2:${camerax_version}" CameraX 向后兼容到 Android 5.0(API Level 21),并且它是基于 Camera 2.0 的 API 进行封装的 7 .setTargetRotation(rotation) 8 // 分辨率 9 .setTargetResolution(resolution) 10 v=kuv8uK-5CLY https://proandroiddev.com/android-camerax-preview-analyze-capture-1b3f403a9395 文章推荐 一文读懂
△ 在 I/O'19 上用 Camera360 现场演示 CameraX 核心功能 我们看到,Camera360 在一台运行着 Android 6.0 Marshmallow 的设备上即可流畅运行,而且使用到了 CameraX,有兴趣的朋友可以观看完整视频: Android Jetpack:了解摄像头支持库 CameraX 觉得视频太长的话,我们也综合 CameraX 的诞生历程为您整理了一份摘要: CameraX 在该支持库诞生之初就已经有数个 Android 顶级开发团队 (包括 Snapchat, Twitter 以及 TikTok 等) 表示会在自己的应用中使用。 △ 通过 CameraX,Android 开发现在就可以轻松实现夜间拍照功能。 图中使用设备是三星 S10+ 在针对入门设备开发的 Google Go 中,其摄像头功能也使用了 CameraX,用来识别摄像头中的文字等内容。
音视频开发基础知识(1)——图像基本概念 给Android工程师的音视频教程之一文弄懂MediaCodec 1. 整体流程 以手机直播为例,其整体流程如下: 2. 数据采集 2.1. 在 Android 系统中,一般使用 AudioRecord 或者 MediaRecord 来采集音频。 2.2 视频采集 视频采集涉及到以下几点: 检测摄像头是否可以使用; 摄像头采集到的图像是横向的,需要对采集到的图像进行一定的旋转后再进行显示; 摄像头采集时有一系列的图像大小可以选择,当采集的图像大小和手机屏幕大小比例不一致时 在 Android 系统下有三套 API 可以进行视频采集,它们是 Camera 和 Camera2还有CameraX 。 需要用到的技术 涉及到如下技术,我将从图像、音频、视频的顺序来罗列: Camera、Camera2、CameraX。
1) CameraX 是一个 Jetpack 库,最低版本是兼容到Android5.0。好学的同学们,肯定又会问,那Jetpack库又是啥呢? 这个库是为了方便我们在各个Android版本和Android设备直接的适配和兼容。 官方的介绍是这样的: CameraX 是 Jetpack 的新增库。利用该库,可以更轻松地向应用添加相机功能。 主要优势表现为以下几点: 1)广泛的设备兼容性 CameraX 支持搭载 Android 5.0(API 级别 21)或更高版本的设备,覆盖现有 Android 设备的 98% 以上。 注意:VideoCapture 是在 CameraX 软件包内的 camera-video 库中实现的,在 1.1.0-alpha10 及更高版本中可用。 hl=zh-cn CameraX架构 https://developer.android.google.cn/training/camerax/architecture?
它提供一致且易用的 API 接口,适用于大多数 Android 设备,并可向后兼容至 Android 5.0 (API 级别 21)。 CameraX 发布新版本频繁,而 Camera2 则随着 Android 的版本而更新; CameraX 可以在您不熟悉相机的情况下也能够进行开发,而 Camera2 则需要您对相机的专业知识有更深层次的了解 在中端设备上对图像大小为 640x480 至 1080p 的数据进行转换大约需要 5~10 毫秒,具体性能因设备而异。此外 APK 会略微增加 50KB 左右。 CameraX Extensions API 相机特效 在 CameraX 1.1 中的 CameraX Extensions API 可以更为充分地发挥设备强大的功能。 更多信息 CameraX 概览 CameraX 使用入门 Codelab CameraX Github 样例代码 Android CameraX 讨论组 希望对 CameraX 1.1 版本的简要介绍对大家有所帮助
添加依赖 // CameraX core library def camerax_version = "1.0.0-beta01" implementation "androidx.camera:camera-core :$camerax_version" // CameraX Camera2 extensions implementation "androidx.camera:camera-camera2:$camerax_version " // CameraX Lifecycle library implementation "androidx.camera:camera-lifecycle:$camerax_version" :id="@+id/view_finder" android:layout_width="match_parent" android:layout_height="match_parent 最后发现新建的工程compileSdkVersion和targetSdkVersion是29,运行的真机是Android8.1的版本,所以把这两项改小得以解决 3. debug时偶现空指针导致闪退 ?
而 Renderscript 是面向计算密集型任务 (比如从 YUV 转换为 RGB 格式) 的一个候选方案,然而从 Android 12 开始,这种方法已经被 废弃 了。 ImageProxy 是 media.image 的一个封装类,它是 Android framework 中提供的一个图片缓冲。 原则上 Android framework 支持的图像缓冲区格式是 PixelFormat 和 ImageFormat 的子集。 性能 我们做了一些性能测试,并与在不同的 Android 版本和设备上使用 Renderscript 的结果进行了比较。 总体上来说,在不同分辨率和 Android 系统版本上,使用 libyuv 的 pipeline 要优于使用 Renderscript 的实现。
Logstash是一款优秀的开源ETL工具/数据搜集处理引擎,可以对采集到的数据做一系列的加工和处理,目前已支持200+插件具有比较成熟的生态。 下图展示了Logstash的上下游主流生态: Logstash不仅可以从日志中获取数据,才可以从Kafka 甚至是 数据库中采集数据。 采集到数据之后,可以转发给ElasticSearch(最常见的场景),也可以转发给MongoDB等。 Logstash的核心概念 第一个概念:Logstash Pipeline Logstash的Pipeline包含了 input(采集) - filter(转换) - output(输出) 三个阶段的处理流程 " index => "movies" document_id => "%{id}" } stdout {} } 小结 本篇,我们了解了ElasticSearch中的数据采集神器