Ошибка подтверждения (! Ssize.empty ()) в remapBilinear - PullRequest
0 голосов
/ 27 марта 2019

Мой opencv_version: 4.1.0-pre

У меня следующий код:

FileStorage fs("camera.yml", FileStorage::READ);
Mat cameraMatrix;
Mat distCoeffs;
fs["camera_matrix"] >> cameraMatrix;
fs["distortion_coefficients"] >> distCoeffs;
fs.release();

Mat image;
string fileName = "view000.bmp";
image = imread(fileName, IMREAD_COLOR);   // Read the file

Mat temp = image.clone();
undistort(temp, image, cameraMatrix, distCoeffs);

Size imageSize = image.size();
Mat view, rview, map1, map2;
initUndistortRectifyMap(cameraMatrix, distCoeffs, Mat(),
                    getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, imageSize, 1, imageSize, 0),
                    imageSize, CV_16SC2, map1, map2);

remap(view, rview, map1, map2, INTER_LINEAR);

undistort функция работает правильно, однако первый вызов remap дает исключение:

OpenCV (4.1.0-pre) Ошибка: не удалось подтвердить (! Ssize.empty ()) в remapBilinear, файл /home/olga/opencv/modules/imgproc/src/imgwarp.cpp, линия 666

Вот calibration_matrix и distortion_coefficients из camera.yml:

camera_matrix: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 6.6979083645491733e+02, 0., 3.5720142378760517e+02, 0.,
       6.6818397497437070e+02, 2.2958328379477018e+02, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
   rows: 5
   cols: 1
   dt: d
   data: [ -9.1630887760709781e-02, 6.3870694676062587e-02,
       -2.9224237615839681e-04, 8.0315318960669040e-04, 0. ]

1 Ответ

1 голос
/ 27 марта 2019

Вы пытались применить переназначение изображения к пустому изображению.

Параметры

remap(src, dst, mapx, mapy);

Ваш ввод view был пустой коврик.

Наиболее релевантное изображение, вероятно, будет вашим входным изображением, поэтому

remap(temp , rview, map1, map2, INTER_LINEAR);
...