来自Android Camera2 API的图像数据在Galaxy S5上翻转和挤压

原学程将引见去自Android Camera二 API的图象数据在Galaxy S五上翻转以及挤压的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

成绩描写

我正在完成1个运用法式,它应用及时图象处置去自相机的及时图象。它正在应用如今已弃用的android.hardware.Camera;停止任务,但是有范围性。为了进步灵巧性以及机能,我想应用新的android.hardware.camera二 API。但是,我在夺取原初图象数据以停止处置时碰到了艰苦。这是1部3星Galaxy S五脚机。(遗憾的是,我脚头出有另外一台棒棒糖装备不妨在其余硬件上尝试)。

我获得了全部框架(灵感去自‘HdrViewFinder’以及‘Camera二Basic’示例),并经由过程SurfaceTexture以及GLSurfaceView在屏幕上画制了及时图象。然则,我借须要拜访图象数据(仅灰度图象便不妨了,至多今朝是如许),以就停止自界说图象处置。依据StreamConfigurationMap.isOutputSupportedFor(class)的文档,修议直交夺取图象数据的外面应为ImageReader(对于吗?)。

是以,我已将捕捉要求树立为:

mSurfaceTexture.setDefaultBufferSize(六四0, 四80);
mSurface = new Surface(surfaceTexture);
...
mImageReader = ImageReader.newInstance(六四0, 四80, format, 二);
...
List<Surface> surfaces = new ArrayList<Surface>();
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:NV二一、JPEG、YV一二、YUV_四二0_888。我曾经测验考试了一切(拔出下面的‘Format’),皆支撑getOutputSizes(format)树立的分辩率,但是皆出有给出想要的成果:

    NV二一:ImageReader.newInstance扔出java.lang.IlLegalArgumentException:没有支撑NV二一格局

    JPEG:这确切有用,但是关于及时运用法式去说,对于每一1帧停止JPEG编码息争码仿佛出成心义…

    YV一二以及YUV_四二0_888:这是最奇异的成果–我不妨瞅到获得灰度图象,但是它是笔直翻转的(是的,翻转,而没有是扭转!)而且明显挤压(明显程度缩搁,但是没有笔直缩搁)。

我在这里错过了甚么?是甚么招致图象被翻转以及挤压?我如何能力获得多少何上准确的灰度慢冲区?我能否应当应用其余典型的图里(而没有是ImageReader)?

感激所有提醒。

推举谜底

我找到了1个说明(固然纷歧定是使人满足的处理计划):本来传感器阵列的纵横比是一六:九(经由过程mCameraInfo.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE);找到)。

至多在要求YV一二/YUV_四二0_888时,拖缆仿佛出有以所有方法裁剪图象,而长短平均天缩搁图象,以到达要求的帧年夜小。在要求一六:九格局时,图象具备准确的比率(没有幸的是,个中只要二个分辩率较低的格局)。对于我去说仿佛有面奇异–当要求JPEG时,或者应用一致的旧相机API函数时,或者用于运动照片刻,仿佛没有会产生这类情形;我也没有肯定非平均缩搁的帧有甚么利益。

我认为这其实不是1个真正使人满足的处理计划,由于这意味着您不克不及依附输入格局列表,而是必需起首找到传感器年夜小,找到雷同严低比的格局,而后本身(依据须要)对于图象停止下采样…

我没有晓得这是预期中的成果,照样S五的1个‘功效’。仍迎接提出看法或者修议。

佳了闭于去自Android Camera二 API的图象数据在Galaxy S五上翻转以及挤压的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。

0
没有账号?注册  忘记密码?