gpt4 book ai didi

python - 如何从视差图中获取3D度量值?

转载 作者:行者123 更新时间:2023-12-02 17:26:57 25 4
gpt4 key购买 nike

我需要从视差中获得3d度量值,cv2.reprojectImageTo3D以0,01s表示点,但是值不是以米为单位,我的循环以4s(640x480 disp图像)表示。

for v in range(dysp.shape[0]):
for u in range(dysp.shape[1]):
d = dysp[v, u]
if d > threshold:
z = (f * b / d)
x = ((u - cx) * b / d - (b / 2))
y = (v - cy) * b / d
points.append([x,y,z]);

如何改善循环或将reprojectImageTo3D结果转换为指标?

最佳答案

在Python中遍历数组很慢。您必须向量化您的代码以使其快速。

3D点的长度单位取决于您从T获得的翻译 vector cv2.stereoCalibrate()的长度单位,而这又取决于传递给objectPointscv2.stereoCalibrate()的长度单位。
cv2.reprojectImageTo3D()应该执行您在循环中编写的内容(除非它不减去b / 2)。它将返回一个大小为(480,640,3)和dtype = float32的图像。因此,每个图像位置都有一个3D点。无效视差值(负数)将根据handleMissingValuescv2.reprojectImageTo3D()参数进行处理。 (检查您的视差值是否为正)

如果视差数组具有dtype = int16,则视差值将被编码为定点数,并且必须将视差值除以2 ^ N(N是小数部分的位数)。如果您使用过OpenCV的BlockMatching,则N为4。

关于python - 如何从视差图中获取3D度量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58713421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com