I'm trying to get EmguCV's CalibrateCamera function to work so that I can estimate the camera position off of points on a planar surface.
this is a snippet of my code with four 3D pseudo positions for testing positions in my scene and four 2D pseudo positions)
Emgu.CV.Structure.MCvPoint3D32f[][] objectPoints = { new MCvPoint3D32f[4] };
for (int i = 0; i < cornerPoints.Length; i++)
{
Vector3 pos = cornerPoints [i].transform.position;
objectPoints [0] [i] = new MCvPoint3D32f(pos.x, pos.y, pos.z);
}
int x1 = 50;
int y1 = 50;
int diff = 10;
PointF[][] imagePoints = { new PointF[4] };
imagePoints [0] [0] = new PointF(-x1, y1);
imagePoints [0] [1] = new PointF(x1, y1);
imagePoints [0] [2] = new PointF(-x1 - diff, -y1);
imagePoints [0] [3] = new PointF(x1 + diff, -y1);
IntrinsicCameraParameters cameraParams = new IntrinsicCameraParameters();
System.Drawing.Size imgSize = new System.Drawing.Size(640,480);
ExtrinsicCameraParameters[] extrinsicParams = new ExtrinsicCameraParameters[1];
Emgu.CV.CameraCalibration.CalibrateCamera(objectPoints,
imagePoints,
imgSize,
cameraParams,
Emgu.CV.CvEnum.CALIB_TYPE.CV_CALIB_FIX_ASPECT_RATIO,
new MCvTermCriteria(0.05),
out extrinsicParams);
unfortunately that's the error I get and I have no idea how to solve it
> EntryPointNotFoundException:> mono_win32_compat_CopyMemory> Emgu.CV.CameraCalibration.ToMatrix[MCvPoint3D32f]> (Emgu.CV.Structure.MCvPoint3D32f[][]> data)> Emgu.CV.CameraCalibration.CalibrateCamera> (Emgu.CV.Structure.MCvPoint3D32f[][]> objectPoints,> System.Drawing.PointF[][] imagePoints,> Size imageSize,> Emgu.CV.IntrinsicCameraParameters> intrinsicParam, CALIB_TYPE> calibrationType, MCvTermCriteria> termCriteria,> Emgu.CV.ExtrinsicCameraParameters[]&> extrinsicParams)> MyCameraCalibration.Start () (at> Assets/CVKinect/Scripts/EmguCV/MyCameraCalibration.cs:76)
it would be great if someone could help me with that. I'm using 4.6.0f3 on win8 64bit
↧