OpenCV Remapping裁剪我的风景图像

OpenCV Remapping crops my Landscape Image

本文关键字:风景 图像 我的 裁剪 Remapping OpenCV      更新时间:2023-10-16

我刚开始使用OpenCV中的单声道相机校准。因此,我使用的示例代码来自http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html这很方便,写得很好。

现在的问题是我使用横向和纵向图像作为输入。这些图像都是1600x1200像素,显示一个棋盘,但是在这些图像中,视图旋转了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

有人知道为什么吗?

问题出在校正映射的计算上:

    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 × 1600。现在,如果图像被旋转(1200 × 1600),它将不会被裁剪。现在我很满意,当然这不是最好的解决方案。