问题标签 [android-camerax]
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 - 如何使用 Android CameraX ImageAnalysis 提高帧速率?
我正在研究新的 CameraX API,以了解从我们当前的 Camera2 系统切换的可行性。
在我们的 Camera2 系统中,我们使用 OpenGL 表面从 PreviewCaptureSession 捕获帧,并且我们在大多数设备上都达到了一致的 30fps 图像处理速度,其中一些能够在启用 AutoExposure 设置的情况下达到 60fps。
CameraX 没有提供接近那个速度的任何东西,我不确定我在设置中是否错过了它。
我已经为 CameraX 和 ImageAnalysis 设置了测试示例,但是对于通过的图像数量,我得到了锁定的帧速率。
例如,我可以将分辨率设置为低至 320x240 到 1920x960,两者都将以(看似有上限)16fps 的速度输出。
当我添加一个 Preview 用例以在其旁边运行并设置 enableTorch(true) 时,ImageAnalysis 用例将突然开始变得更像 20fps,有时会达到 30ish 的峰值。
很明显,预览用例改变了相机的一些自动曝光状态?
这是我当前设置的截图...
有没有办法在 ImageAnalysis 周围改变 CameraX 中的相机设置以获得更高的帧速率?
无论如何,实际上是否可以改变诸如传感器持续时间、ISO、曝光之类的东西?
java - Camerax如何禁用自动对焦
我开发了一个 android 应用程序来通过 camerax 扫描 QR 码。预览时如何禁用自动对焦?
没试过
它会慢慢扫描 qr 结果
android - 在 android 的图像分析用例中,我无法获得比 960 * 720 更高的分辨率
我正在开发用于扫描图像并处理它们的移动应用程序。我在其中使用了新的 cameraxAPI 和图像分析用例。问题是我的模型需要高分辨率图像才能工作,而且我无法获得高于 960*720 的图像。
这是我构建分析器的代码:
注意:虽然没有 2000*2000 分辨率,但根据文档,它应该带来最接近的更高分辨率。更新:我正在使用 HTC 欲望 12+ 和 API 26 进行测试。
android - 为 Android Camera2 或 CameraX 选择流类型
我需要以编程方式从流类型标识的相机流中读取像素值CAM_STREAM_TYPE_PREVIEW
。
在 CameraX API 中,此流通过androidx.camera.core.Preview
接口公开。但是,我需要以编程方式访问此流的像素。换句话说,我需要它以某种方式androidx.camera.core.ImageAnalysis
公开它的流。
有没有允许我这样做的设置?
android-camerax - 无法使用 camerax 拍摄多张图像
我正在尝试使用 camerax 拍摄多张照片,但只拍摄了第一张照片,代码和日志输出将显示我的意思。
这是代码:
相关的日志输出为:
但拍摄新照片 onCapture Success 2 称为从未发生
尽管根据文档拍摄两张照片并没有错:
TakePicture 立即返回,并在捕获完成后调用侦听器以提供结果。多次调用 takePicture 将在捕获前一张图片后开始按顺序拍照。
https://developer.android.com/reference/androidx/camera/core/ImageCapture?hl=en
android - QR Scanner Camera Preview 停止并重新启动,然后在读取 qr 码时关闭
我已经在我的应用程序中实现了 QR 扫描仪。我使用了 Firebase MLKit 并尝试了 Zxing Scanner。
我开始运行 qr 扫描仪的新活动。一旦它检测到有效的二维码,它就会完成扫描器活动并将结果发送回之前的活动。
一切正常,没有任何错误。
但是android中的Camera可能存在小错误。
在获得有效的二维码后,相机会关闭一秒钟然后再次启动,并在一两秒钟后关闭,然后活动完成并将结果返回到先前的活动。
我已经尝试过 Camera、Camera2、Zxing Core、MLKit 以及所有可能的组合。每次发生同样的事情。
我还尝试了几个 Github Repos MLKitQRScanner、KotlinFirebaseMLKitQRRealtimeDemo、QRCodeCameraX、QRScannerCameraX
这是使用 CameraX,但我也尝试了 android 中较旧的相机 api,结果相同
我认为问题出在相机预览上,但我尝试了 camera2 和 cameraX api。两者都给出相同的输出。所以它可能是代码中的东西。
活动
一旦分析器获得有效代码,我只需要关闭相机和活动
此外,如果我在扫描仪活动相机预览关闭然后重新打开并且必须再次按下该返回按钮以完成此扫描仪活动时,请按下返回按钮。
所以它不仅仅是条码监听器。它也发生在返回按钮上。
android - 使用 CameraX 获取散景和 HDR 供应商效果的 isExtensionAvailable 始终为 false 值
我在尝试什么?
启用散景和 HDR 等供应商效果。
我试过什么?
我已经使用 Pixel-2 模拟器和三星 Galaxy S9+ 设备尝试了以下代码:
但是在检查时总是得到false
价值isExtensionAvailable
。
依赖项:
android - 是否可以在显示之前处理camerax预览的数据?
我想处理预览中显示的图像并显示处理后的版本。
我尝试使用分析器中的 imageProxy 对其进行修改,但这似乎没有做任何事情。
我知道较旧的相机 API 能够做到这一点,但 CameraX 似乎没有 API。
android - 将 YUV 图像转换为单字节数组
我正在使用CameraX
从相机获取帧以进行进一步分析。回调返回ImageProxy
包含 3 个 YUV_420_888 图像平面的对象。现在,我想将此图像传递给 3rd 方库进行进一步处理。那里的函数接受带有“原始图像数据”的一维字节数组 - 如文档所述。我不明白如何将这 3 个数组(Y、U、V)转换为一个字节数组。
我试图将其转换Bitmap
为字节数组,但库返回该输入无效。我还尝试仅从 YUV 中获取一个通道并将其传递给库,它可以工作,但结果很差,因为(正如我猜测的那样)一个通道没有为算法携带足够的信息。
如何将 Y、U 和 V 通道合并为一个字节数组?