cvUndistort.cpp

Simple test code showing the crash when calling cv::undistort - Ignasi Rius, 2011-12-01 05:00 pm

Download (1.2 kB)

 
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
}