1

我正在遵循https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/streaming_depth_data_from_the_truedepth_camera的指南。它用于AVCaptureDepthDataOutput()从前置摄像头传输深度数据。

但是,其中两条边有错误的数据。在纵向模式下,它将是上边缘和右边缘。在逆时针旋转的横向中,它将位于左侧和上方。这是它的外观示例。这是来自教程,但我修改了一些代码。请注意,我确实将实际距离打印为数字,以确保它不是视频/颜色渲染的错误。 https://drive.google.com/file/d/1AGFHAZypmHz9136T02ufedz-X3Ct94Kq/view?usp=sharing

如果它只是将 3D 数据转换为 2D 数据的必要工件,我可以接受。但我正在寻找的是裁剪图像的“正确”方法,以便 2D 深度缓冲区在边缘没有这些伪影。我怎么知道作物的距离?我只是试验一下吗?如果是这样,我怎么知道它在所有设备上都一样?

另一个问题是,如果物体离相机太近,距离会被解释为最大距离而不是最小距离。这是预期的吗?

4

1 回答 1

0

关闭“平滑深度”,缓冲区将更加清晰和一致(例如,小于 50 像素)。可以安全地假设边缘附近的任何值都不准确,因此插入一些类似于 50 的量,您应该尝试看看什么最适合您。

尽可能接近被报告为最大值的值,您应该检查float.isNanfloat.isInfinite过滤掉这些值。存在无法检测到比该距离更近的物体的最小范围。

于 2020-12-08T17:23:21.093 回答