3

OpenCV 中是否有一个简单的函数可以从立体相机对中获取对象的 3D 位置和姿势?

我用棋盘校准了相机和基线。我现在想取一个已知对象,比如同一个棋盘,在它自己的坐标中具有已知的 3D 点,并找到真实世界的位置(在相机坐标中)。

有针对单个相机 (POSIT) 执行此操作的功能,以及查找整个场景的 3D 视差图像的功能。

执行与相机校准几乎相同的过程并在相机对中找到棋盘必须很简单 - 但我找不到任何获取对象+图像坐标并返回立体对的相机坐标的函数。

谢谢

4

2 回答 2

1

校准立体相机系统后,您就获得了两个相机之间的相对姿势(=平移+方向)。使用solvePnP / solvePnPRansac,如果你找到一个相机和物体之间的相对姿势,然后你也得到了物体和另一个相机之间的相对姿势。例如,在用于机器人导航的立体系统中,通常仅将来自先前帧的重建 3D 点与其中一个相机匹配,然后估计来自 3d 点的相对相机位姿。立体系统只是简化并提高了三角测量/结构重建的质量。

于 2012-08-17T17:19:16.163 回答
0

是的,StereoBM_create():

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

imgL = cv.imread('tsukuba_l.png',0)
imgR = cv.imread('tsukuba_r.png',0)

stereo = cv.StereoBM_create(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)

plt.imshow(disparity,'gray')
plt.show()

https://docs.opencv.org/4.x/dd/d53/tutorial_py_depthmap.html

于 2021-12-20T12:19:43.740 回答