问题标签 [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 投票
0 回答
28 浏览

java - 创建 CaptureSession 后是否可以添加和删除 Surfaces?

我的代码中有两个 Surface,一个用于Encoder流式传输surface,另一个用于获取帧形式ImageReader,我要做的是surface在捕获会话运行时添加一段时间或删除表面。

0 投票
0 回答
70 浏览

android - 从 ImageReader 中的 MediaPlayer 获取帧

在我的应用程序中,我使用 camera2 API 来获取多个表面中的图像,并且效果很好。出于调试目的,我想将输入源从相机更改为文件视频,为此我正在使用 MediaPlayer。是否可以像相机一样从 mediaPlayer 获取帧?在我的测试中,我从 setOnImageAvailableListener 中只得到一个图像,之后不再调用它。

这是我定义表面的方式

我为每个表面使用不同的 mediaPlayer 实例,每个表面都有不同的分辨率。

在预览表面中,我可以毫无问题地看到视频。

0 投票
0 回答
62 浏览

android - ImageReader.acquireLatestImage 抛出异常

我正在尝试将 ExoPlayer 的输出渲染到 ImageReader:

有一些要求:

  • 即使在 Android 处于睡眠状态(屏幕关闭)期间,ImageReader 也应接收 Exo 的渲染
  • ExoPlayer 不会有任何“真实”的渲染表面,只有这个imageReader.getSurface.

现在, step0 是让它工作,但我无法达到它的原因:imageReader.acquireLatestImage()抛出异常:

java.lang.UnsupportedOperationException:生产者输出缓冲区格式 0x7fa30c06 与 ImageReader 配置的缓冲区格式 0x1 不匹配。

我可以理解抛出消息,但我无法弄清楚0x7fa30c06

它应该意味着YCbCr_420_SP。但是这个常量已被弃用,并建议

改用 ImageFormat.NV21。(来源

我尝试使用 NV21 初始化 ImageReader,但随后又发生了一次崩溃:

java.lang.RuntimeException:java.lang.IllegalArgumentException:不支持 NV21 格式

如何使用ImageReader来从此播放器中获取静止图像?

0 投票
0 回答
22 浏览

image - apache 常见 IptcParser 中的 ImageReadException

我正在尝试使用 org.apache.commons.imaging.formats.jpeg.JpegImageParser 解析图像文件,但显然我收到 ImageReadException 消息“无效块大小:551954 > 65533”。我的理解是 JpegImageParser 只是一个包装器,它在下面使用 IptcParser ,甚至异常也是从0抛出的。

  1. 你能解释一下这里提到的块大小吗?
  2. 是否可以进行调整以增加允许的块大小限制(目前似乎是 65533)?
  3. 是否有任何替代解析器(开源)可用,我可能不必面对这样的问题?
0 投票
0 回答
62 浏览

android - Android MediaProjection - VirtualDisplay 和 ImageReader 的合适分辨率是多少?

我使用 MediaProjection api 以及 VirtualDisplay 和 ImageReader 来共享屏幕。下面是创建 VirtualDisplay 和 ImageReader 的方法:

并且在 OnimageAvailable 上接收到 rgba 原始字节:

到目前为止,一切都很好,并且框架可以毫无问题地渲染到表面视图上。但事情在这一点上变得有趣:

在此处输入图像描述

将宽高改为640 x 480后,效果好一点:

在此处输入图像描述

但如您所见,共享屏幕的纵横比有问题。最后,当我将宽度和高度更改为 768 * 1366 时,结果在某种程度上可以接受但

在此处输入图像描述

  1. 为什么当我为 Imageريالeader 和 VirtualDisplay 设置设备屏幕的宽度和高度时,共享屏幕损坏了?(对于这个设备:宽度=1080 高度=2400)

  2. 为什么当我设置高度大于宽度时,共享屏幕是好的?

  3. 在上一张图中,共享屏幕并没有覆盖整个目标 SurfaceView。如何为 VirtualDisplay 和 ImageReader 设置覆盖整个 SurfaceView 的分辨率?

0 投票
1 回答
33 浏览

python - 如何摆脱异常类:NoneType?

运行此程序时,我得到 Class "NoneType" 。我在从驱动器读取图像文件失败的地方。请纠正我。

0 投票
1 回答
86 浏览

android - 如何将 .png/.jpg 格式文件转换为 android.media.Image 对象?

我有一个 android 应用程序,并注意到它是 onImageAvailable(ImageReader imagereader) 函数,它在可用时从 ImageReader 获取图像并处理它们。我的目标是操纵该 Image 对象,以便它处理 png 文件,而不是从相机中获取该图像。所以,我想改变

类似于

可能吗?

0 投票
0 回答
17 浏览

android - 手机已重新加载(Android)

我有一个应用程序,它ImageReaderTesseract. 它们连续工作并在 15-60 分钟后重新加载设备(在小米 Note 9T 上测试)。我有没有机会理解重新加载的原因?

使用分析器,我看不到可能导致重新加载的重大变化。

捕获方法

停止捕获

阅读文本的方法

任何提示或建议都适用。谢谢!

编辑

可能有人知道如何获取任何日志,为什么手机重新启动?

0 投票
1 回答
61 浏览

android-ndk - 调用 onImageAvailable 回调,但 acquireLatestImage 返回 NO_BUFFER_AVAILABLE

我正在使用Camera2 API在C的本机端连续拍照,它工作正常,除了有时在receivenf onImageAvailable回调之后,调用acquireLatestImage时,返回NO_BUFFER_AVAILABLE。根据 Android 文档:https ://developer.android.com/ndk/reference/struct/a-image-reader-image-listener#onimageavailable

请注意,调用 AImageReader_acquireNextImage 或 AImageReader_acquireLatestImage 可能会在此回调中返回 AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE。例如,当有多个图像和回调排队时,如果应用程序调用 AImageReader_acquireLatestImage,一些图像将在其相应的回调执行之前返回给系统

有人可以解释一下这实际上何时会发生以及可能的解决方案。

0 投票
0 回答
72 浏览

android - 使用 EGL 和 openGL 渲染到大型 ImageReader 表面,无法渲染出 GL_MAX_VIEWPORT_DIMS 范围

我正在尝试在 Imagereader 的表面上使用 OpenGL ES 绘制一些东西。我为它创建了 EGL 上下文和表面。一切正常,当图像阅读器尺寸小于 GL_MAX_VIEWPORT_DIMS(我的设备上为 8192)时。我可以从它那里得到一张好照片。

但是当尺寸大于 8192 时,比如 8224,输出图像仍然留下一些填充无法绘制。这是输出图像。

即使我尝试使用 glViewport(0, 32, width, 8192),渲染结果也会向上偏移,但仍然不能超过 padding(8192~8224)。但是 glclear 命令可以使背景清晰到目标颜色(在我的例子中,它是红色)。

有没有办法在表面的填充部分绘制?

这是我的代码:

从 imagereader 表面读取的输出图片