OpenCV Remapping обрезает мой ландшафтный образ

Я только начал с калибровки моно камеры в OpenCV.
Тем самым я использую пример кода из
http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html
что удобно и красиво написано.

Теперь проблема в том, что я использую пейзажные и портретные изображения для ввода. Все эти изображения имеют размер 1600×1200 пикселей и отображают шахматную доску, однако на некоторых из этих изображений вид поворачивается на 90 градусов. Теперь код выглядит так:

        view = imread(s.imageList[i], 1);
if(view.empty())
continue;

remap(view, rview, map1, map2, INTER_LINEAR);
imshow("Image View", rview);
imwrite(s.imageList[i], rview);

Перераспределение (избавление от искажений) является успешным, но сохраненное изображение обрезается для пейзажных изображений. Это означает, что алгоритм каким-то образом пытается поместить неискаженное изображение в портретную форму, что приводит к следующему:
http://picload.org/view/lccorri/img_0197.jpg.html

Кто-нибудь получил какой-то вклад, почему это?

0

Решение

Проблема была в вычислении выпрямительных карт:

    initUndistortRectifyMap(cameraMatrix, distCoeffs, Mat(), getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, Size(1600,1600), 1, Size(1600,1600), 0),
Size(1600,1600), CV_16SC2, map1, map2);

Здесь я допустил ошибку, так как для размера изображения я теперь установил Размер (1600,1600), который установил размер 1600 x 1600. Теперь не имеет значения, повернуто ли изображение (1200×1600), оно не будет обрезано. На данный момент я доволен, конечно, это не лучшее решение.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector