Opencv 什么';不失真点有什么问题吗 float k[]={1531.49,01267.78,01521.439952.078,0,0,1}; 浮点数d[]={-0.27149,0.15384,0.0046,-0.0026}; CvMat camera1=CvMat(3,3,CV_32FC2,k); CvMat distCoeffs1=CvMat(1,4,CV_32FC2,d); 常量int npoints=4;//指定的点数 //点初始化。 //在本例中,只有2个PONT,在实际代码中,它们是从文件中读取的。 浮点输入_点[npoints][4]={{0,0},{25601920};//其余的将设置为0 CvMat*src=cvCreateMat(1,npoints,CV_32FC2); CvMat*dst=cvCreateMat(1,npoints,CV_32FC2); //填充src矩阵 float*src_ptr=(float*)src->data.ptr; 对于(int-pi=0;pi
我希望使用CVUnsortPoints函数。并使用示例代码进行测试。当我使用VS2012运行时,它不起作用。它说“src.size与dst.size不匹配”。因为我是OpenCV的新手。有人能帮我吗? 非常感谢。Opencv 什么';不失真点有什么问题吗 float k[]={1531.49,01267.78,01521.439952.078,0,0,1}; 浮点数d[]={-0.27149,0.15384,0.0046,-0.0026}; CvMat camera1=CvMat(3,3,CV_32FC2,k); CvMat distCoeffs1=CvMat(1,4,CV_32FC2,d); 常量int npoints=4;//指定的点数 //点初始化。 //在本例中,只有2个PONT,在实际代码中,它们是从文件中读取的。 浮点输入_点[npoints][4]={{0,0},{25601920};//其余的将设置为0 CvMat*src=cvCreateMat(1,npoints,CV_32FC2); CvMat*dst=cvCreateMat(1,npoints,CV_32FC2); //填充src矩阵 float*src_ptr=(float*)src->data.ptr; 对于(int-pi=0;pi,opencv,Opencv,我希望使用CVUnsortPoints函数。并使用示例代码进行测试。当我使用VS2012运行时,它不起作用。它说“src.size与dst.size不匹配”。因为我是OpenCV的新手。有人能帮我吗? 非常感谢。 vs2012 的运行结果再次, > 使用OpenCV的C++ API,而不是被禁止的C 1: float k[]={1531.49,0,1267.78,0,1521.439,952.078,0,0,1}; float d[]={-0.27149,0.1538
vs2012 的运行结果再次,<强> > <强>使用OpenCV的C++ API,而不是被禁止的C 1:
float k[]={1531.49,0,1267.78,0,1521.439,952.078,0,0,1};
float d[]={-0.27149,0.15384,0.0046,-0.0026};
CvMat camera1=cvMat( 3, 3, CV_32FC2, k );
CvMat distCoeffs1=cvMat(1,4,CV_32FC2,d);
const int npoints = 4; // number of point specified
// Points initialization.
// Only 2 ponts in this example, in real code they are read from file.
float input_points[npoints][4] = {{0,0}, {2560, 1920}}; // the rest will be set to 0
CvMat * src = cvCreateMat(1, npoints, CV_32FC2);
CvMat * dst = cvCreateMat(1, npoints, CV_32FC2);
// fill src matrix
float * src_ptr = (float*)src->data.ptr;
for (int pi = 0; pi < npoints; ++pi) {
for (int ci = 0; ci < 2; ++ci) {
*(src_ptr + pi * 2 + ci) = input_points[pi][ci];
}
}
cvUndistortPoints(src, dst, &camera1, &distCoeffs1);
请避免使用opencv遗留的c-api。哦,很抱歉没有注意到这一点。我认为dst变量应该有四个元素。正如您所看到的,结果可能是错误的。您能帮助我吗?
Mat_<float> cam(3,3); cam << 1531.49,0,1267.78,0,1521.439,952.078,0,0,1;
Mat_<float> dist(1,5); dist <<-0.27149,0.15384,0.0046,-0.0026;
const int npoints = 4; // number of point specified
// Points initialization.
// Only 2 ponts in this example, in real code they are read from file.
Mat_<Point2f> points(1,npoints);
points(0) = Point2f(0,0);
points(1) = Point2f(2560, 1920);
Mat dst; // leave empty, opencv will fill it.
undistortPoints(points, dst, cam, dist);
cerr << dst;
[-0.90952414, -0.69702172, 0.92829341, 0.69035494, -0.90952414, -0.69702172, -0.90952414, -0.69702172]