我正在实现一个应用程序,它使用来自相机的实时图像进行实时图像处理.使用现已弃用的android.hardware.Camera,它有限制地工作;提高灵活性和性能我想使用新的android.hardware.camera2 API.然而,我无法获取原始图像数据进行处理.这是三星Galaxy S5. (不幸的是,我没有其他Lollipop设备可以方便地在其他硬件上进行测试).

我得到了整体框架(灵感来自’HdrViewFinder’和’Camera2Basic’样本),并通过SurfaceTexture和GLSurfaceView在屏幕上绘制实时图像.但是,我还需要访问图像数据(灰度级很好,至少目前为止),以进行自定义图像处理.根据StreamConfigurationMap.isOutputSupportedFor(class)的文档,直接获得图像数据的推荐表面将是ImageReader(正确吗?).

所以我将捕获请求设置为:

mSurfaceTexture.setDefaultBufferSize(640, 480);

mSurface = new Surface(surfaceTexture);

...

mImageReader = ImageReader.newInstance(640, 480, format, 2);

...

List surfaces = new ArrayList();

surfaces.add(mSurface);

surfaces.add(mImageReader.getSurface());

...

mCameraDevice.createCaptureSession(surfaces, mCameraSessionListener, mCameraHandler);

在ImageReader的onImageAvailable回调中,我正在访问数据,如下所示:

Image img = reader.acquireLatestImage();

ByteBuffer grayscalePixelsDirectByteBuffer = img.getPlanes()[0].getBuffer();

…虽然(如上所述)实时图像预览正在运行,但我得到的数据(或者我得到它的方式)有问题.根据

mCameraInfo.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputFormats();

…应支持以下ImageFormats:NV21,JPEG,YV12,YUV_420_888.我已经尝试了所有(插入上面的’format’),所有都支持根据getOutputSizes(格式)设置的分辨率,但它们都没有给出所需的结果:

> NV21:ImageReader.newInstance抛出java.lang.IllegalArgumentException:不支持NV21格式

> JPEG:这确实有效,但对于实时应用程序来说,对每个帧进行JPEG编码和解码似乎没有意义……

> YV12和YUV_420_888:这是最奇怪的结果 – 我可以看到得到灰度图像,但是它是垂直翻转的(是的,翻转,没有旋转!)并且显着地被压扁(水平缩放,但不是垂直缩放).

我在这里想念的是什么?是什么导致图像被翻转和压扁?如何获得几何正确的灰度缓冲区?我应该使用不同类型的表面(而不是ImageReader)吗?

任何提示赞赏.

android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩相关推荐

  1. android 颜色过渡动画效果,Android buttom textview 颜色平滑过渡的动画效果

    1.TransitionDrawable.例如,在文件夹中绘制一个xml文件,你可以这样写: 然后,在你的xml的实际检视你都引用这个TransitionDrawable在android:backgr ...

  2. python怎么设置颜色深浅变化_机器学习中减弱不同图像数据色调及颜色深浅差异...

    关键词:消除不同图像数据色调差异/消除颜色深浅差异/病理/机器学习/深度学习/人工智能 机器学习训练图像数据时可能会因为图像数据之间的颜色深浅,色调等影响训练和预测结果,本方法可以减弱颜色深浅/色调不 ...

  3. android 颜色渐变方法,在android上渐变按钮颜色变化

    我想逐渐改变按钮颜色,点击它之后.我的意思是,按钮必须具有,例如下一组颜色:默认情况下 – 深蓝色,然后是深蓝色,然后是蓝色,然后是浅蓝色,最后是最亮的蓝色.这只是一个例子,我真的想在循环中更改按钮颜 ...

  4. curl 请求日志_kong api网关日志 将请求和响应数据附加到磁盘上的日志文件中

    术语 plugin:在请求被代理到上游API之前或之后,在Kong内部执行操作的插件. Service:表示外部上游 API或微服务的Kong实体. Route:Kong实体,表示将下游请求映射到上游 ...

  5. android camera捕捉,通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机

    我想从使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相机以4:3的宽高比捕捉视频.它工作正常,除非相机有16:9传感器阵列(作为三星Galaxy ...

  6. android camera hal3 分析,HAL3 enabler下载-HAL3 enabler(开启camera2 api)下载v5.0 安卓版-西西软件下载...

    HAL3 enabler(开启camera2 api)让你无需Magisk模块就能够轻松的开启手机当中的camera2 api功能.对于想要将手机当中的相机功能玩出更多花样的人来说,这绝对是一款极为便 ...

  7. android 获取linux线程状态,Android 的进程与线程总结

    本文翻译自Android官方文档 当一个Android应用程序组件启动时候,如果此时这个程序的其他组件没有正在运行,那么系统会为这个程序以单一线程的形式启动一个新的Linux 进程. 默认情况下,同一 ...

  8. s5原生android 5.0,三星Galaxy S5升级Android 5.0:美味棒棒糖

    快速设置与通知 作为Android 5.0 Lollipop重要的新特性之一,在全新TouchWiz的声音与通知菜单也中也新增了智能通知选项,可对每一个应用的通知状态进行管理,避免敏感信息泄露,而通知 ...

  9. 黑白图片颜色反转并保存

    将图像的黑白颜色反转并保存 import cv2 # opencv读取图像 img = cv2.imread(r'E:\Python-workspace\OpenCV\OpenCV/YY.png', ...

最新文章

  1. fedora mysql 客户端_fedora mysql 安装
  2. 如何检查你的项目是不是真的需要用到 AI?
  3. 将图片的二进制序列转为numpy且有shape
  4. 未处理sqlexception中value_plsql异常处理
  5. Python中_,__,__xx__方法区别
  6. lucene使用3.0.3_Apache Lucene 5.0.0即将发布!
  7. VM虚拟机ping不通局域网其他主机的解决办法
  8. python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝
  9. windows 下安装nodejs及其配置环境
  10. linux复制后权限变了,linux系统(centos debian freebsd等)如何拷贝数据并保持原来的属性(权限 属主)不变?...
  11. 空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”
  12. 270 扩展固态硬盘_新款macbook扩展坞,内置固态硬盘盒,支持NVME M2协议,一秒传输1GB...
  13. Chapter 1: Motion Blur
  14. python 进化树_科学网-应用Raxml软件构建最大似然法系统进化树-王翠的博文
  15. 读书笔记(十五)--将才
  16. SAP批量修改物料标准成本
  17. 判断数是否为素数与素数输出
  18. 编程之美 1.2 中国象棋将帅问题
  19. android listview替代,Android笔记——RecyclerView替代ListView
  20. Android判断软键盘 输入法 是否显示

热门文章

  1. java任务追踪预警怎么写_分布式系统中如何优雅地追踪日志(原理篇)
  2. 计算时间差_小王子是怎么用四步法进行时间计算并成功避开日界线的
  3. python找工作学历要求_自考本科找工作被拒=自考学历没用?
  4. 【flink】flink写入clickhouse Error while starting CH writer AccessDeninedExcepton
  5. 95-36-220-ChannelHandler-RejectedExecutionHandlers
  6. [MySQL] 2059 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded dlope
  7. 【Flink】Flink network netty ProducerFailedException SimpleChannelInboundHandler NullPointerException
  8. 【Flink】Flink 1.9 本地运行无法访问界面 {“errors“:[“Not found.“]}
  9. Spring : @EnableTransactionManagement注解
  10. Nginx 反向代理配置