15 #include <mrpt/3rdparty/do_opencv_includes.h>
30 m_camera_params = campar;
33 double aux1[3][3], aux2[1][5];
34 for (
int i = 0; i < 3; i++)
36 for (
int i = 0; i < 5; i++) aux2[0][i] = campar.
dist[i];
38 const cv::Mat inMat(3, 3, CV_64F, aux1);
39 const cv::Mat distM(1, 5, CV_64F, aux2);
41 m_dat_mapx.resize(2 * campar.
nrows * campar.
ncols);
42 m_dat_mapy.resize(campar.
nrows * campar.
ncols);
44 cv::Mat mapx(campar.
nrows, campar.
ncols, CV_16SC2, &m_dat_mapx[0]);
45 cv::Mat mapy(campar.
nrows, campar.
ncols, CV_16UC1, &m_dat_mapy[0]);
47 cv::initUndistortRectifyMap(
48 inMat, distM, cv::Mat(), inMat, mapx.size(), mapx.type(), mapx, mapy);
62 if (m_dat_mapx.empty())
64 "Error: setFromCamParams() must be called prior to undistort().");
69 m_camera_params.nrows, m_camera_params.ncols, CV_16SC2,
70 const_cast<int16_t*
>(&m_dat_mapx[0]));
72 m_camera_params.nrows, m_camera_params.ncols, CV_16UC1,
73 const_cast<uint16_t*
>(&m_dat_mapy[0]));
80 mapx, mapy, INTER_LINEAR);
91 if (m_dat_mapx.empty())
93 "Error: setFromCamParams() must be called prior to undistort().");
97 m_camera_params.nrows, m_camera_params.ncols, CV_16SC2,
98 const_cast<int16_t*
>(&m_dat_mapx[0]));
100 m_camera_params.nrows, m_camera_params.ncols, CV_16UC1,
101 const_cast<uint16_t*
>(&m_dat_mapy[0]));
104 cv::Mat
out(in.size(), in.type());
106 cv::remap(in,
out, mapx, mapy, cv::INTER_LINEAR);