如何使用opencv找到具有内在和外在参数的点的3d位置
我想用opencv找到一个点的位置。我使用 cvCalibrateCamera2 校准了两个相机。所以我知道内在参数和外在参数。我读到,通过已知的内在和外在参数,我可以轻松地通过三角测量重建 3d。 opencv 中是否有一个函数可以实现此目的。我认为 cvProjectPoint2 可能有用,但我不明白到底是什么。那么我如何找到一个点的 3d 位置。
谢谢。
i want to find a position of a point with opencv. i calibrated two cameras using cvCalibrateCamera2. so i know both intrinsic and extrinsic parameters. I read that with a known intrinsic and extrinsic parameters, i can reconstruct 3d by triangulation easily. Is there a function in opencv to achive this.I think cvProjectPoint2 may be useful but i don t understand what exactly. So how i can find 3d position of a point.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先你必须找到差异。 OpenCV 中实现了两种算法 - 块匹配 (
cvFindStereoCorrespondenceBM
) 和图割 (cvFindStereoCorrespondenceGC
)。后一种结果更好,但速度更慢。视差检测后,您可以使用cvReprojectImageTo3D
将视差重新投影为 3D。这将为您提供两个摄像机视图中输入图像的每个点的距离。另请注意,立体对应算法需要校正图像对(使用
cvStereoRectify
、cvInitUn DististRectifyMap
和cvRemap
)。You first have to find disparities. There are two algorithms implemented in OpenCV - block matching (
cvFindStereoCorrespondenceBM
) and graph cuts (cvFindStereoCorrespondenceGC
). The latter one gives better results but is slower. After disparity detection you can reproject the disparities to 3D usingcvReprojectImageTo3D
. This gives you distances for each point of the input images that is in both camera views.Also note that the stereo correspondence algorithms require a rectified image pair (use
cvStereoRectify
,cvInitUndistortRectifyMap
andcvRemap
).