本文整理汇总了C#中CvMat.GetReal1D方法的典型用法代码示例。如果您正苦于以下问题:C# CvMat.GetReal1D方法的具体用法?C# CvMat.GetReal1D怎么用?C# CvMat.GetReal1D使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CvMat
的用法示例。
在下文中一共展示了CvMat.GetReal1D方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindExtrinsicCameraParams2Cs
//.........这里部分代码省略.........
CvMat _m = new CvMat(1, count, MatrixType.F64C2);
ConvertPointsHomogeneous(objectPoints, matM);
ConvertPointsHomogeneous(imagePoints, _m);
Convert(cameraMatrix, matA);
if (!((rvec.ElemType == MatrixType.F64C1 || rvec.ElemType == MatrixType.F32C1) &&
(rvec.Rows == 1 || rvec.Cols == 1) && rvec.Rows * rvec.Cols * rvec.ElemChannels == 3))
{
throw new ArgumentException();
}
if (!((tvec.ElemType == MatrixType.F64C1 || tvec.ElemType == MatrixType.F32C1) &&
(tvec.Rows == 1 || tvec.Cols == 1) && tvec.Rows * tvec.Cols * tvec.ElemChannels == 3))
{
throw new ArgumentException();
}
CvMat _mn = new CvMat(1, count, MatrixType.F64C2);
CvMat _Mxy = new CvMat(1, count, MatrixType.F64C2);
// normalize image points
// (unapply the intrinsic matrix transformation and distortion)
UndistortPoints_(_m, _mn, matA, distCoeffs, null, _Ar);
if (useExtrinsicGuess)
{
using (CvMat _r_temp = new CvMat(rvec.Rows, rvec.Cols, MatrixType.F64C1))
using (CvMat _t_temp = new CvMat(tvec.Rows, tvec.Cols, MatrixType.F64C1))
{
Convert(rvec, _r_temp);
Convert(tvec, _t_temp);
for (int i = 0; i < Math.Max(rvec.Rows, rvec.Cols); i++)
{
param[i] = _r_temp.GetReal1D(i);
param[i + 3] = _t_temp.GetReal1D(i);
}
}
}
else
{
CvScalar Mc = Avg(matM);
_Mc[0] = Mc.Val0;
_Mc[1] = Mc.Val1;
_Mc[2] = Mc.Val2;
Reshape(matM, matM, 1, count);
MulTransposed(matM, _MM, true, _Mc);
SVD(_MM, matW, null, matV, SVDFlag.ModifyA | SVDFlag.V_T);
// initialize extrinsic parameters
if (W[2] / W[1] < 1e-3 || count < 4)
{
// a planar structure case (all M's lie in the same plane)
double[] h = new double[9];
CvMat R_transform = matV;
CvMat T_transform = new CvMat(3, 1, MatrixType.F64C1);
CvMat matH = new CvMat(3, 3, MatrixType.F64C1, h);
CvMat _h1, _h2, _h3;
if (V[2] * V[2] + V[5] * V[5] < 1e-10)
SetIdentity(R_transform);
if (Det(R_transform) < 0)
Scale(R_transform, R_transform, -1);
//GEMM(R_transform, _Mc, -1, null, 0, T_transform, GemmOperation.B_T);
for (int r = 0; r < 3; r++)