【发布时间】:2013-05-04 07:26:36
【问题描述】:
目前我正在实施立体视觉的校准方法。我正在使用 OpenCV 库。
示例文件夹中有一个示例,但我对实现有一些疑问:
这些数组的用途是什么?这些 CvMat 变量是什么?
// ARRAY AND VECTOR STORAGE:
double M1[3][3], M2[3][3], D1[5], D2[5];
double R[3][3], T[3], E[3][3], F[3][3];
CvMat _M1 = cvMat(3, 3, CV_64F, M1 );
CvMat _M2 = cvMat(3, 3, CV_64F, M2 );
CvMat _D1 = cvMat(1, 5, CV_64F, D1 );
CvMat _D2 = cvMat(1, 5, CV_64F, D2 );
CvMat _R = cvMat(3, 3, CV_64F, R );
CvMat _T = cvMat(3, 1, CV_64F, T );
CvMat _E = cvMat(3, 3, CV_64F, E );
CvMat _F = cvMat(3, 3, CV_64F, F );
在其他示例中,我看到以下代码:
//--------Find and Draw chessboard--------------------------------------------------
if((frame++ % 20) == 0)
{
//----------------CAM1-------------------------------------------------------------------------------------------------------
result1 = cvFindChessboardCorners( frame1, board_sz,&temp1[0], &count1,CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS);
cvCvtColor( frame1, gray_fr1, CV_BGR2GRAY );
if 语句究竟做了什么?为什么是 %20?
提前谢谢你!
更新:
我有两个关于一些实现代码的问题:link
-1:在第 18 行声明并在第 25 行的 board_sz 变量中使用的那些 nx 和 ny 变量。这些 nx 和 ny 是棋盘模式中的行和列还是角? (我认为这些是行和列,因为 cvSize 有宽度和高度的参数)。
-2:这些 CvMat 变量用于什么(第 143 - 146 行)?
CvMat _objectPoints = cvMat(1, N, CV_32FC3, &objectPoints[0] );
CvMat _imagePoints1 = cvMat(1, N, CV_32FC2, &points[0][0] );
CvMat _imagePoints2 = cvMat(1, N, CV_32FC2, &points[1][0] );
CvMat _npoints = cvMat(1, npoints.size(), CV_32S, &npoints[0] );
【问题讨论】:
-
不可能从这段代码中找出这些变量的用途。这就像在
int x = 0;中询问x是什么,而 %20 是为了每 20 帧运行一次下面的代码。 -
你可以在这个网站上找到例子:link 我还是不知道那些 CvMat 变量是干什么用的?
标签: opencv camera-calibration calibration