问题标签 [android-camera2]

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 回答
1625 浏览

android - 最小未排队缓冲区计数超过 camera2

我有一个 Android 应用程序,它可以在没有预览表面的情况下拍照。我已经使用 Lollipop 的新 camera2 - api 21 实现了这一点

代码是这样的:

我已经在带有 Android 6 的 nexus 5x 上对此进行了测试,并且可以正常工作。previews 设置为 20 - 您需要捕获更多图像才能使相机适应光线。

我已经用 Galaxy s5 - Android 5 测试了这段代码,但它不起作用。我收到此错误:超出最小未排队缓冲区计数

即使我将预览设置为 0,我也会收到相同的错误。

我发现了一些有关“超出最小未排队缓冲区计数”错误的主题,但所有这些主题都与不推荐使用的相机类有关。你知道我是否可以在 Android 5 上解决这个问题吗?

谢谢

0 投票
1 回答
2104 浏览

android - 使用 android.hardware.Camera2 进行人脸检测

我正在使用https://github.com/googlesamples/android-Camera2Basic

我将人脸识别模式设置为 FULL。

CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL);

我的捕获回调:

Output: faces : 0 , mode : 2

人脸长度始终为 0。看起来它无法正确识别人脸,或者我错过了一些东西。

0 投票
3 回答
4056 浏览

android - 拍摄的 Camera2 API 图片不会在图库应用中显示

我有一个相机项目,我camera2 API特别使用这个链接 https://github.com/googlesamples/android-Camera2Basic

例如,我可以将拍摄的照片保存到我的文件管理器中DCIM/camera,但是当我打开我的画廊时,它不会显示我的最后一张照片。

谁能帮我?

还有一个问题,我想让我的相机可以是一个列表:例如,当我打开“LINE”并想用相机拍照时,我希望我的相机出现并且可以选择。

这是我尝试将图片保存到自定义路径的示例代码:

0 投票
1 回答
1100 浏览

android - Android - BitmapFactory.decodeByteArray 返回 null

我正在尝试用图像处理做一个相机应用程序。在这里,我尝试将图像(字节数组)转换为位图,但是

每次都返回 null

这是我的代码:

和以下堆栈跟踪:

在此处输入图像描述

有人有想法吗?

0 投票
1 回答
3339 浏览

android - Android中某些相机分辨率的不同捕获输出大小

我正在使用 Android Camera2 API 开发一个自定义相机应用程序,您可以在其中切换手机中可用的不同相机和视频分辨率。它还提供了拍摄平方 1:1 照片的可能性。为了拍摄方形照片,我拍摄了一张普通的 4:3 照片,然后对其进行裁剪以保持 1:1。(所以 4032x3024 将是 3024x3024)。

在某些分辨率下拍摄 1:1 图片时,我注意到一个问题,输出被略微裁剪(缩放)。这是用两种不同分辨率拍摄的同一张照片的结果:

第一张照片是在 1944x1944 拍摄的

第二张照片是在 3024x3024 拍摄的

我的 Nexus 5X 在 4:3 上支持 12MP、8MP、5MP 和 2MP。当我使用大于 5MP 的任何分辨率时会发生此问题。

我用来裁剪图像的方法如下:

cropSquareImageByteArray 方法:

我猜裁剪的原因是 16:9 容器中的 4:3 图像。因为我注意到打电话的时候

生成的位图输出的尺寸在 2MP 中为 1280x960 (4:3),在 5MP 中为 1600x1200 (4:3),但更大的分辨率为 1920x1080 (16:9),因此 4:3 图像调整为 16:9位图,可能会导致裁剪。

我试图弄清楚如何解决这个问题。我还检查了这篇文章Android 5.0 Wrong crop regions on preview surface 并捕获了静止图像,但在那里没有找到解决方案。

*编辑:我的 ImageReader 配置如下:

的值pictureSizeValue是我想要的输出。所以对于一个正方形的图像,它类似于 3024x3024。

0 投票
6 回答
8825 浏览

android - 如何在 Android 中使用 Camera2 API 以编程方式拍摄照片

我想在使用 camera2 API 录制视频时捕获图像。

有两个单独的演示可用。1.捕捉图像2.录制视频

我试图将它们组合成一个应用程序。但在很多事情上感到困惑。喜欢

  • CameraDevice 是单一的,它表示连接到 Android 设备的单个相机。
  • 请求中需要不同的模板。对于图像:mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);和视频mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
  • 在 createCaptureSession 方法中,需要 ImageReader 的表面,而对于视频,则需要 MediaRecorder。

图像和视频的 createCaptureSession 方法中都需要 CameraCaptureSession.StateCallback。

camera2 API 是新的。所以谷歌上没有更多的例子。

有人对此有任何想法吗?喜欢如何在 android 中录制时拍摄照片?

0 投票
2 回答
5927 浏览

android - 无法解析方法 newinstance()

我正在尝试了解如何使用 Api.camera2,并且我正在关注此链接中的谷歌示例 https://github.com/googlesamples/android-Camera2Basic

当我打开项目时它可以工作,但是当我尝试重建应用程序以查看代码各部分的效果时,出现以下错误无法解析方法 newinstance() 它是主要的 java 类

我尝试从原始项目中导出项目设置,但它不起作用

0 投票
8 回答
13255 浏览

android - 三星 Galaxy S7 (Camera2) 上的 YUV_420_888 解读

考虑到以下逻辑(据我了解),我编写了从 YUV_420_888 到 Bitmap 的转换:

在此处输入图像描述

总结该方法:内核的坐标 x 和 y 与 Y 平面(2d 分配)的非填充部分的 x 和 y 以及输出位图的 x 和 y 一致。然而,U 平面和 V 平面具有与 Y 平面不同的结构,因为它们使用 1 个字节来覆盖 4 个像素,此外,它们的 PixelStride 可能大于 1,此外它们可能也有一个可以与 Y 平面不同的填充。因此,为了让内核有效地访问 U 和 V,我将它们放入一维分配中并创建了一个索引“uvIndex”,它给出了对应的 U 和 V 在该一维分配中的位置,对于给定的 ( x,y) 在(未填充的)Y 平面(以及输出位图)中的坐标。

为了保持 rs-Kernel 精简,我通过 LaunchOptions 限制 x 范围,排除了 yPlane 中的填充区域(这反映了 y 平面的 RowStride,因此可以在内核中忽略)。所以我们只需要考虑 uvIndex 中的 uvPixelStride 和 uvRowStride,即用于访问 u 值和 v 值的索引。

这是我的代码:

渲染脚本内核,命名为 yuv420888.rs

Java端:

在 Nexus 7 (API 22) 上进行测试会返回漂亮的彩色位图。然而,该设备具有微不足道的像素步幅 (=1) 并且没有填充(即行步幅=宽度)。在全新的三星 S7 (API 23) 上进行测试,我得到的图片颜色不正确——除了绿色。但图片并没有显示出对绿色的普遍偏见,只是似乎没有正确再现非绿色。请注意,S7 应用 u/v 像素步幅为 2,并且没有填充。

由于最关键的代码行在 rs 代码中,因此我认为 u/v 平面的访问 uint uvIndex= (...) 可能存在问题,可能是此处对像素步幅的考虑不正确。有没有人看到解决方案?谢谢。

更新:我检查了一切,我很确定有关 y,u,v 访问的代码是正确的。所以问题一定出在 u 和 v 值本身。非绿色有紫色的倾斜,从 u,v 值来看,它们似乎在大约 110-150 的相当窄的范围内。我们真的有可能需要处理特定于设备的 YUV -> RBG 转换......?!我错过了什么吗?

更新 2:已更正代码,现在可以使用,感谢 Eddy 的反馈。

0 投票
1 回答
2123 浏览

android - Android:Camera Crop Intent Lollipop 及更高版本提供吐司消息,因为此图像不支持编辑

对于从 Lollipop 及以上版本的 android 手机拍摄的裁剪图像一个应该使用文件提供程序这里是我的代码。

现在,当它成功返回 onActivityResult 时,我收到一条错误消息,因为无法编辑此图像

0 投票
1 回答
147 浏览

android - Android N 开发者预览版:相机支持需要第三个价值

我有一个 Nexus 6P。我正在调查为什么OpenCamera停止在 Android N Developer Preview 上工作(我不是开发人员,只是一个用户)。我发现以下可能导致问题的代码:CameraControllerManager2.java :62

我创建了一个新的 Android 项目,并添加了以下功能:

调用test(0),我设备上的控制台输出为:

当我查找support( docs ) 的可能值时,它们必须是0、1 或 2,但是如何support取 3 的值?它应该是位掩码还是发生了更糟糕的事情?