1

我已经使用官方示例使用 Camera2 API 来捕获 RAW 传感器帧。代码在 java 中,但我在 Android Studio 的帮助下将其转换为 Kotlin。我对其进行了测试,我能够拍摄一张 dng 图片并将其保存到我的手机中。到目前为止没有问题。

但我真正想要的是能够检索到有关图片的一些信息,我不在乎保存它。我想直接用我的智能手机进行处理。

到目前为止,我尝试的是获取图像的字节数组。在函数dequeueAndSaveImage中,我从 ImageReader 中检索图像:image = reader.get()!!.acquireNextImage()。我想这就是我必须处理图像的地方。我尝试记录image.width,image.height并且image.planes.count没有问题。顺便说一句,由于格式为RAW_SENSOR,因此image.planes.count为 1,对应于原始传感器图像数据的单个平面,每个颜色样本为 16 位。

但是,当我尝试记录image.planes[0].buffer.array().size例如时,我得到了一个FATAL EXCEPTION: CameraBackgroundwith java.lang.UnsupportedOperationException

如果我试图记录同样的事情,但是在将图像保存到 dng 文件的函数中,我会得到另一种类型的错误FATAL EXCEPTION: AsyncTask #1java.lang.UnsupportedOperationException

我是否以正确的方式检索有关图像的信息?例如像素的强度、平均值、每个颜色通道的标准偏差等......

编辑:我认为我找到了问题,虽然不是解决方案。当我登录image.planes[0].buffer.hasArray()时,它返回 false,这就是调用array()引发异常的原因。

但是,我如何从图像中获取数据?

4

0 回答 0