问题标签 [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.

0 投票
1 回答
125 浏览

android - 分离从 ImageReader 生成的图像

我试图创建一个使用 Camera2 API 的 Android 应用程序,作为我想要开发一个模块的功能的一部分,该模块可以保存 ImageReader 生成的多个图像,如下所示:

图片 image = reader.acquireLatestImage();

我收到以下异常:

IllegalStateException 当前获取的图像过多

如文档中所述: https://developer.android.com/reference/android/media/ImageReader#acquireLatestImage()

这是因为从 'acquireLatestImage' 返回的图像仍然属于 ImageReader 队列。

有没有办法分离从 'ImageReader' 返回的图像?
有没有办法复制图像,最好不要将其存储在磁盘上,这是一种资源消耗操作?

谢谢

0 投票
0 回答
185 浏览

android - 我应该在使用 MediaCodec 解码期间使用 ImageReader 来访问 Image

我正在尝试解码帧,然后修改,然后编码为单独的文件。我在这里简化了代码:

但我收到以下错误:

我的代码是在 android 中正确构建解码-修改-编码视频吗?

0 投票
1 回答
731 浏览

android - 如何使用 Android Camera2 API 访问 ImageReader 队列中的所有图像

在我的项目中,我需要连续捕捉摄像机流的帧。这是我使用的当前代码片段。

为了设置 ImageReader,我将其设置maxImages为 20。假设每次触发回调时,ImageReader 队列中都会有 20 帧。

然后访问这 20 帧的每个图像。我使用了以下代码段。

这里的主要障碍是能够在回调中访问 20 帧中的每一帧,以进行进一步的图像处理。然而,上述代码似乎有一些问题(我只能访问底层队列中的最新图像)。事实上,我只需要访问用户指定的每一帧中的一个小补丁(50 x 50 像素)。

这样做的原因是我需要获取采样频率为 ~60Hz 的 20 个连续帧数据。如果我们只能在每个回调中访问单帧,这似乎很难实现,最多只能达到 30fps。

任何建议都会非常受欢迎!谢谢!

0 投票
0 回答
28 浏览

android-camera2 - Camera2 直播示例

我是 Camera2 API 的新手,希望在捕获实时相机帧、对它们进行后处理(理想情况下显示如何使用 ImageReader 访问原始数据缓冲区 [])并预览后处理的项目中看到它们的实际效果数据。

是否有结合所有这些步骤的示例项目?

0 投票
1 回答
78 浏览

java - 无法读取 EBCDIC 037 解码图像 (Java)

我有一个 EBCDIC 文件,我从中提取了图像。但是,图像上有一些数据是识别我的交易的关键来源。假设我有一个图像作为“stackoverflow logo”存储在我的桌面上,名称为“img1.jpg”,当我使用以下代码阅读它时,它可以工作

但是,当我尝试对从 EBCDIC 转换解码的图像进行相同操作时,它返回 null。

我观察到的不同之处在于解码图像中没有关联的颜色。有什么方法可以读取这些图像并检索图像上的文本。以下不是我正在处理的确切图像,只是为了给出一个想法,我正在分享来自互联网的样本。注意:正在处理的图像看起来像扫描图像(灰度)示例: 在此处输入图像描述

另外,我观察到如果我打开解码文件并通过截图工具进行屏幕截图并将其存储为 jpg 文件(已经是 jpg)并读取它,系统正在读取该文件。不确定问题出在哪里,是压缩还是颜色编码或格式。

0 投票
1 回答
610 浏览

android - Android截图错误:RGBA覆盖BLOB格式缓冲区应该有高度==宽度

我正在尝试使用服务截取我的 Android 设备(Samsung Galaxy Tab S5e)的屏幕截图。我正在使用这里的代码。

在链接的代码中,ImageReader.newInstance(mWidth, mHeight, PixelFormat.RGBA_8888, 2);使用了。注意PixelFormat.RGBA_8888. 现在,这将不允许我编译我的项目,我收到了错误:Error: Must be one of: ImageFormat.UNKNOWN, ImageFormat.RGB_565... etc.

所以我尝试更改PixelFormat.RGBA_8888ImageFormat.JPEG并编译。但是,我的应用程序现在崩溃并显示以下消息:

RGBA 覆盖 BLOB 格式缓冲区应具有高度 == 宽度

我尝试更改PixelFormat.RGBA_88880x4,0x1ImageFormat.RGB_565其他一些。这样做通常会导致消息异常:

生产者输出缓冲区格式 0x1 与 ImageReader 配置的缓冲区格式 0x4 不匹配。

这在某种程度上与中描述的格式相关联onImageAvailable(ImageReader reader)

我看过以下 SO 帖子,似乎正确的格式是特定于设备的,但我已经尝试了所有这些,错误是上述之一。

我完全不知所措(而且我是 Java/Android 新手),所以真的可以使用一些帮助。

0 投票
0 回答
93 浏览

android - 如何在录制的 Android 视频中添加水印

我有一个应用程序可以录制视频并用一些数据覆盖预览。录制视频时数据可能会发生变化,我希望能够在录制时将这些数据“烘焙”到视频本身。真的就像水印一样。

我知道以后可以使用 FFMPeg 组合它,但这相当麻烦,并且需要用户等待该过程发生,然后才能查看视频。

到目前为止,我还没有找到在 Android 上执行此操作的任何方法(iPhone 是的……那里并不难)。

我在想,也许可以通过将 Camera2 馈送的流输出直接传送到 FFMpeg 来完成,但这会在功率较小的设备中陷入困境。另一种选择可能是将每个帧输出与在后台线程中生成的图像结合起来,然后使用 OpenGL(我不知道)在记录结果之前将它们结合起来。我猜 ImageReader.aquireLatestImage() 可能在那里工作。

从那个 android.media.image 我会转换成这样的位图:

然后我会像这样组合图像:

然后将位图转换为图像(虽然我还没有找到可以完成的方法)然后将该图像注入 MediaRecorder.VideoSource.SURFACE (再次,不确定如何)。

这是合理的,还是有更好的方法,我只是还没有偶然发现?

谢谢!

0 投票
1 回答
102 浏览

android - (Camera2 API)我可以同时运行 2 个不同配置的 ImageReader 实例吗?

我正在修改(Java)用于对象检测的 TF Lite 示例应用程序。它有一个实时视频源,显示常见对象周围的框。它接收 640*480 的 ImageReader 帧。

我想使用这些边界来裁剪项目,但我想从高质量图像中裁剪它们。我认为5T能够达到4K。

那么,是否可以运行 2 个 ImageReader 实例、一个低质量视频源(由 TF Lite 使用)和一个用于捕获全质量静止图像?我也无法将第二个固定到任何 Surface 以供用户预览,图片必须在后台捕获。

在这篇中型文章 ( https://link.medium.com/2oaIYoY58db ) 中,它说“由于硬件限制,在任何给定时间,相机传感器中只能有一个配置处于活动状态;这称为活动配置。”

我是这里的android新手,所以对此没有多大意义。

谢谢你的时间!

PS:据我所知,CameraX 还无法做到这一点。

0 投票
0 回答
91 浏览

android - 使用图像阅读器表面作为显示黑屏的外层视频表面

我正在尝试使用 imagereader 表面作为 exoplayer 的表面,视频中断但音频正在播放。

`

0 投票
1 回答
324 浏览

android - 如何使用 ImageReader 读取 OpenGL 表面?

我正在尝试使用 OpenGL ES 1.0 绘制一些东西,渲染到屏幕效果很好。然后我想使用 ImageReader 从表面获取图像数据,但是在渲染时根本没有调用它的回调 ImageReader.OnImageAvailableListener,我的代码有什么问题?

}