2009年4月28日星期二

记录OpenCV文档中的一个错误

在 关于 cvFindFundamentalMat 的例子中,给了如下代码

Example. Estimation of fundamental matrix using RANSAC algorithm

int point_count = 100;
CvMat* points1;
CvMat* points2;
CvMat* status;
CvMat* fundamental_matrix;

points1 = cvCreateMat(1,point_count,CV_32FC2);
points2 = cvCreateMat(1,point_count,CV_32FC2);
status = cvCreateMat(1,point_count,CV_8UC1);

/* Fill the points here ... */
for( i = 0; i <>data.db[i*2] = ;
points1->data.db[i*2+1] = ;
points2->data.db[i*2] = ;
points2->data.db[i*2+1] = ;
}

fundamental_matrix = cvCreateMat(3,3,CV_32FC1);
int fm_count = cvFindFundamentalMat( points1,points2,fundamental_matrix,
CV_FM_RANSAC,1.0,0.99,status );


其中标注了红色的部分为矛盾处。
32F:表示32位的浮点数,也就是float型。
可是
points2->data.db表示的是double型。这样在数据读写的时候就会出现地址错误。
所以应该如下修正:
32F:----->64F
或者
points2->data.db----->points2->data.fl

没有评论:

发表评论