3

我在对象坐标中有 4 个共面点和对应的图像点(在图像平面上)。我想计算物体平面相对于相机的相对平移和旋转。

FindExtrinsicCameraParams2 应该是解决方案。但是我在使用它时遇到了麻烦。编译时不断出现错误

有没有人在 OpenCV 中成功使用过这个功能??我可以有一些评论或示例代码来使用这个功能吗?

谢谢!

4

3 回答 3

3

我会使用 OpenCV 函数FindHomography()因为它更简单,您可以轻松地将单应性转换为外部参数。

你必须像这样调用函数

FindHomography(srcPoints, dstPoints, H, method, ransacReprojThreshold=3.0, status=None)

方法是 CV_RANSAC。如果超过 4 个点,RANSAC 将选择最好的 4 点集来满足模型。

您将获得 H 中的单应性,如果您想将其转换为外部参数,您应该按照我在这篇文章中的说明进行操作。

基本上,外在矩阵 (Pose) 的第一、第二和第四列等于 tp 单应性。第三列是多余的,因为它是第一列和第二列的叉积。

于 2012-08-24T08:36:04.817 回答
1

After several days testing OpenCV functions related to 3D calibration, getting over all the errors, awkward output numbers, I finally get the correct outputs for these functions including findHomography, solvePnP (new version of FindExtrinsicCameraParams) and cvProjectPoints. Some of the tips have been discussed in use OpenCV cvProjectPoints2 function. These tips are also applied for the error in this post. Specifically, in this post, my violation is passing float data to CV_64F Mat. All done now!!

于 2012-08-31T06:02:34.107 回答
0

您可以使用 CalibrateCamera2。

objectPts - 你的 4 个共面点 imagePts - 你对应的图像点。

此方法将计算内在矩阵和失真系数,它们会告诉您 objectPts 如何作为 imagePts 投影到相机的成像平面上。

由于您仅使用 1 个摄像头,因此此处没有要计算的外部参数。如果您使用 2 个摄像头,那么您正在考虑使用 StereoCalibrate 计算外部矩阵。

安库尔

于 2012-08-24T06:04:53.857 回答