2015-04-09 6 views
-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); 

Я надеюсь использовать функцию cvUndistortPoints .И использовал пример кода для test.When я использовал VS2012 бежать, он dosen't work.It говорит «src.size dosen't соответствовать dst.size».Для Я новичок в OpenCV.Can кто-то мне помочь? Спасибо. результат подножка по vs2012 1, что случилось с cvUndistortPoints

+0

, пожалуйста, избегайте использования opencv-наследия c-api. – berak

ответ

1

снова, пожалуйста использовать OpenCV в C++ API, не осуждается гр один:

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] 
+0

О, извините, что не заметил, что. Я думаю, что переменная dst должна иметь 4 Четыре элемента. Как вы можете видеть, результат может быть неправильным. не могли бы вы помочь мне? – user4705465

+0

благодарю вас. Const int npoints ошибочно, это должно быть 2. – user4705465

Смежные вопросы