问题标签 [image-reader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - acquireNextImage 与 acquireLatestImage 之间的区别
我正在使用 Camera2 API 连续拍照并且工作正常,在这里我可以使用以下代码保存捕获的图像:
在这里我想知道通过acquireLatestImage或acquireNextImage获取图像的最佳情况是什么?适合获得连续图像。
preview - 获取帧时android camera2预览滞后
我正在使用 Android camera2 以在预览模式下实时提取帧以将它们缝合到 NDK 端(openCv)。我使用ImageReader
表面来获取帧,但它仅限于最大帧值。
它工作得很好,但由于我们需要所有帧,因此必须从ImageReader
目标表面移除CaptureRequest.Builder
并再次添加它。所以我们在这一点上有一个滞后。
我们怎样才能ImageReader
没有最大帧,或者我们怎样才能从camera2中的实时视频中获取所有帧而没有任何预览延迟?
我的代码:
java - 解锁屏幕后未调用 onImageAvailable() 函数
在测试 Android Camera2 API 的性能时,我注意到与ImageReader
.
当应用程序启动时,onImageAvailable()
函数被正确调用,但在锁定和解锁屏幕后,它根本没有被调用。我的应用程序中处理相机的部分基于 Camera2Basic Google 教程。
更重要的是,我已经安装了提供 Camera2 API 的Camera2Basic Android 演示应用程序,我发现即使是谷歌制作的这个应用程序也有同样的问题。
这个问题有什么解决办法吗?
在 Android Studio 中使用 Debug 工具一段时间后,我发现只有在用于预览的函数在函数中可用onImageAvailable()
时才会出现调用函数
的问题。TextureView
onResume()
如果mTextureView.isAvailable()
返回false并SurfaceTextureListener
设置为 on,mTextureView
则onImageAvailable()
正确调用,但如果openCamera(mTextureView.getWidth(), mTextureView.getHeight())
在问题中调用函数onResume()
。
android - 如何映射从 ImageReader Camera2 接收的图像的 CameraResult 的 getFrameNumber
我需要从我的 camera2getFrameNumber
接收到的 Image 对象。ImageReader
目前,我收到以下代码的不同时间戳,因此,我无法映射回调getFrameNumber
。CameraResult
现在在 ImageReader 回调:-
现在的问题是图像阅读器mTimeStap
与值不匹配result.get(CaptureResult.SENSOR_TIMESTAMP) / 1000000
,所以我无法映射 getFrameNumber。
注意:我的 android 是为 Qualcomm 820 构建的 7.1.1 自定义操作系统。
android - 为什么 Android 的 ImageReader 类这么慢?
我为 Android 3.4.1 的全新版本尝试了 OpenCV,JavaCamera2View
但速度太慢(仅显示相机视图约 15fps)。当我尝试使用旧版本时JavaCameraView
,它给了我很好的结果(~30fps,这是我相机的极限)。
我想知道 Camera2 版本为什么这么慢,并研究了实现。我注释掉了图像的所有处理和渲染(只是让相机绘制到内部ImageReader
对象,然后使用acquireLastImage()
方法读取它),它仍然是 15 fps。但是,当我将目标表面从ImageReader
对象更改为视图本身的表面时,它突然给了我 30 fps。
所以问题是,为什么ImageReader
上课这么慢?我的猜测是 ImageReader 正在从使用 OpenGL 的 Surface 读取图像,glReadPixels()
这非常慢,因为它需要将图像从 GPU 内存传输到 CPU 内存(或者它可能正在等待 GPU 刷新?),但我不能一定要确定,因为ImageReader
所做的一切都隐藏在本机代码中。
或者相反ImageReader
很好,OpenCV 是否缺少某些东西?
我正在使用华硕 Zenfone 4 Max,Android 7.1.1。
android - Android 相机 2:ImageReader 的图像没有步幅值
我一直在尝试将图像从相机路由到 ImageReader,以便我可以直接使用 Camera2 API 操作图像。当我将捕获会话流传输到 SurfaceView 时,该流工作得很好。然后,当我将捕获会话流设置为 ImageReader 时,我注意到图像在某种程度上是无效的。
在我的 ImageReader 的 OnImageAvailable 回调函数中,我拉下一个可用的 Image 并尝试读取它。这就是我遇到问题的地方。图像不为空,并且平面在那里,但平面的缓冲区一开始是空的。当我尝试获取缓冲区时,它们突然不为空,但尝试从中读取会使应用程序崩溃而没有堆栈跟踪。此外,平面中的像素和行步长设置为 0。但是,图像的宽度和高度已正确设置。
因此,我认为我的 ImageReader 设置不正确。问题是我做错了什么?
代码:
android - 在没有 Camera2 API 的情况下将 ImageReader 表面用于视频流
我正在尝试将相机的视频流放入图像读取器表面,以便能够处理这些图像。我发现了很多处理 camera2 API 的示例,但我不使用它,因为我的视频流来自外部摄像头。
理想情况下,我将有两个表面:一个作为预览,另一个来自 ImageReader 来处理图像。与此类似。我了解您将两个曲面与 aCaptureRequest.Builder
和 then结合起来.addTarget(surface)
。问题是我没有CamerDevice
制作createCaptureRequest
.
我使用的代码可以在这里找到。
我试图创建一个 ImageReader 及其表面并将其传递给startDecoding
函数。但这并没有很好地工作,因为我收到了这个错误:
任何指向正确方向的提示都会很好!
更新1:
错误是由 的返回值引起的dequeueOutputBuffer
,因为它的值为-1
。根据 MediaCodec 上的文档,这意味着呼叫超时。但是为什么会这样呢?
更新 2
我没有surfaceCreated
(因为我不再有 SurfaceView),所以代码移到了onCreate
. 其他一切都和这里差不多
android - 在 Android 上处理使用 ImageReader 获得的图像
我从 ImageReader 接收图像,格式为 PixelFormat.RGBA_8888
我想要的是将该图像转换为 ARGB。
获取缓冲区很简单
但结果对我来说没有意义。这是一个 320x240 的图像,它应该有 320X240X32(RGBA_8888) 字节......但是 buffer.length 只有 307200 字节。
它还有striderow 1280和stridePixel 4,所以应该更大。
我知道我可能会问一个基本问题,但不幸的是我找不到任何关于此的信息或教程。
谢谢
android - FirebaseVisionImageMetadata 的 ImageReader 格式兼容性(通过 Android 上的 Camera2 API)
我想使用 ImageReader 中的图像字节数组来构造一个FirebaseVisionImageMetadata
用于条形码扫描的对象(作为ML Kit的一部分)。我正在使用 Camera2 API 并遵循此 PR来支持帧预览。
但是,当我将结果格式传递给FirebaseVisionImageMetadata
构建器时,我收到以下错误:
我传递给的格式ImageReader
是ImageReader.YV12
sinceFirebaseVisionImageMetadata
只接受NV21
or YV12
,但由于ImageReader
不接受NV21
,我只剩下YV12
. 当我使用这种格式(如上所示)时,相机会以黑屏启动。我也尝试过传入ImageReader.YUV_420_888
,但结果相同IllegalArgumentException
from FirebaseVisionImageMetadata
。
我的猜测是我可能必须以不同的方式转换字节数组,或者转换为不同的格式(?)。
任何帮助,将不胜感激。
资料来源:
android - 找不到 Xamarin Android 的 PixelFormat 枚举
我有以下代码,我在 xamarin android 中创建 ImageReader 实例,如何将图像格式从更改ImageFormatType.Rgb565
为PixelFormat.RGBA_8888
我无法找到它的库或枚举类。