KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I use OpenCV to undestort set of points after camera calibration. The code follows. const int npoints = 2; // number of point specified // Points initialization. // Only 2 ponts in this example, in real code they are read from file. float input_points[npoints][2] = {{0,0}, {2560, 1920}}; 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); After the code above dst contains following numbers: -8.82689655e-001 -7.05507338e-001 4.16228324e-001 3.04863811e-001 which are too small in comparison with numbers in src . At the same time if I undistort image via the call: cvUndistort2( srcImage, dstImage, &camera1, &dist_coeffs1 ); I receive good undistorted image which means that pixel coordinates are not modified so drastically in comparison with separate points. How to obtain the same undistortion for specific points as for images? Thanks.
Tags (comma-separated)
Save Edits
Cancel