cvUndistort.cpp
1 | #include <opencv2/opencv.hpp> |
---|---|
2 | |
3 | using namespace std; |
4 | using namespace cv; |
5 | |
6 | |
7 | //Global vars
|
8 | Mat camera_matrix(3,3,CV_64F); |
9 | Mat dist_coeffs(1,4,CV_64F); |
10 | Mat imain = Mat::zeros( 480, 480, CV_8UC3 ); |
11 | Mat imaout = Mat::zeros( 480, 480, CV_8UC3 );; |
12 | |
13 | |
14 | |
15 | void resetUndistortCoeffs()
|
16 | { |
17 | setIdentity(camera_matrix); |
18 | camera_matrix.at<double>(0,0) = (imain.cols -1)/2.0; |
19 | camera_matrix.at<double>(0,2) = (imain.cols -1)/2.0; |
20 | camera_matrix.at<double>(1,1) = (imain.rows -1)/2.0; |
21 | camera_matrix.at<double>(1,2) = (imain.rows -1)/2.0; |
22 | dist_coeffs = Scalar::all(0.0); |
23 | } |
24 | |
25 | |
26 | //=============================================================
|
27 | // main procedure
|
28 | //=============================================================
|
29 | int main(int argc, char *argv[]) |
30 | { |
31 | imshow("Original image", imain);
|
32 | waitKey(0);
|
33 | |
34 | //Init camera_matrix and dist_coeffs
|
35 | resetUndistortCoeffs(); |
36 | |
37 | FileStorage fs2("testcvUndistort1.yml", FileStorage::WRITE);
|
38 | fs2 << "camera_matrix" << camera_matrix << "dist_coeffs" << dist_coeffs; |
39 | fs2.release(); |
40 | |
41 | //Do undistort
|
42 | undistort(imain, imaout, camera_matrix, dist_coeffs); //<<----- Crash occurrs inside this func
|
43 | |
44 | //See results
|
45 | imshow("Imatge undistorted", imaout);
|
46 | waitKey(0);
|
47 | } |