android - Camera2 API 上相同的分辨率比例下视角不同
问题描述
我正在使用 Camera2 API 构建一个测试应用程序。部分设备显示以下问题,但在 1920x1080 和 1280x720 分辨率下,图像的视角不同。
我认为视角应该是一样的,因为两张图片的比例是一样的。
这些相同的问题将出现在我创建的应用程序中,并且当我在 PlayStore 上使用 Mark Harman 的 OpenCamera 应用程序测试它们时会看到相同的结果。
此图像是使用 OpenCamera 应用程序 ( https://play.google.com/store/apps/details?id=net.sourceforge.opencamera ) 捕获的。
我们测试的设备是 Galaxy J7。
Galaxy S6、7、8 和 9 在两种分辨率下具有相同的视角。
Galaxy J7 的 HAL 实现会不会出错?
(1280x720) 在此处输入图像描述
(1920x1080) 在此处输入图像描述
解决方案
你确定你可以camera2
在 Galaxy J7 上获得 1920x1080 分辨率吗?
我相信您使用 API 获得 1440x1080 而不是 1920x1080 camera2
,请查看此 github.com/googlearchive/android-Camera2Basic/issues/123
因此,在某些带有旧版相机的设备上,您只能使用旧版Camera
API 获得全高清预览,因此它不是比率而是分辨率本身
所以 Galaxy J7 不完全支持camera2
- Legacy 级别,而不是 Limited、Full 或 3 级别
val isLegacyLevelCamera = cameraCharacteristics(context, cameraIdx)
.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
== CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
因此,如果它是旧版级别 - 请使用旧版API,否则您将无法在使用APICamera
的旧版相机的某些设备上获得全高清分辨率camera2
推荐阅读
- string - 如何同时接受 Vec
和 Vec 作为 Rust 中的函数 arg - java - 将两个 @GetMapping 映射到同一个 @RestController 到 Spring Boot
- scala - Sbt - 指定依赖扩展
- msbuild - 如何使用道具文件(NuGet)从 csproj 中排除文件
- r - 在 Shiny 中获得正确的圈数
- node.js - 如何在 ANTLR 中正确编写具有后视功能的规则
- css - 如何裁剪图像以使它们都具有相同的大小
- angular - 构建我的 Angular 5 项目时出现间歇性问题
- javascript - Node.js 如何通过 JSON 循环获取值
- docker - 如何在 Docker 映像的构建过程中创建 Docker 参数