OpenCV Remapping裁剪我的风景图像
OpenCV Remapping crops my Landscape Image
我刚开始使用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),它将不会被裁剪。现在我很满意,当然这不是最好的解决方案。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- OpenCV Remapping裁剪我的风景图像