使用EmguCV(OpenCV)解决共面点姿态估计

时间:2012-05-29 19:47:22

标签: c# math opencv computer-vision

我在相机中检测到同一平面上有4个点(一个扁平的方形物体),我正在尝试计算相对于相机的这个方块的姿势。

我使用的是最新版本的EmguCV(http://www.emgu.com/wiki/index.php/Main_Page),它是OpenCV的C#包装器。

我见过POSIT(http://opencv.willowgarage.com/wiki/Posit),但这不适用于共面点。我想知道是否有任何东西可以解决OpenCV中的共面姿态估计。

我也见过solvePnp http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-solvepnp  我相信它会做我想要的,但我似乎无法在EmguCV中找到这个功能。

有谁知道如何使用EmguCV解决这个问题?

2 个答案:

答案 0 :(得分:0)

虽然在emgu中没有SolvePnP,但是一旦你在一架飞机上拥有至少4个点对应关系(你有),你仍然可以计算单应性。如果您不确定,请参阅CameraCalibration.FindHomography的文档。一旦你有单应性,你可以将其分解为旋转和平移,从而相机姿势。看看this article

答案 1 :(得分:0)

Emgu.CV::CameraCalibration.SolvePnP(Emgu.CV.Structure.MCvPoint3D32f [],System.Drawing.PointF [],Emgu.CV.IntrinsicCameraParameters,Emgu.CV.CvEnum.SolvePnpMethod)

升级并安装最新的NuGet软件包。

使用每个视图的已知内部参数和外部参数估计外部相机参数。必须指定3D对象点的坐标及其对应的2D投影。此功能还可以最大限度地减少反投影误差。