Python Opencv:校准相机和图像不失真
我使用python calibrate.py脚本(opencv示例的一部分)来研究opencv相机校准算法 我在脚本中只做了一些小的修改,未失真的图像总是以与输入图像相同的图片大小存储 如果我使用opencv提供的图片之一作为输入图像,结果与预期一致。未失真图像按预期生成 但如果我用自己的照片,我会得到以下结果: 很抱歉,无法上载我的输入图片(图片大小相同),因为声誉不佳:-( 结果如下:Python Opencv:校准相机和图像不失真,python,image,opencv,Python,Image,Opencv,我使用python calibrate.py脚本(opencv示例的一部分)来研究opencv相机校准算法 我在脚本中只做了一些小的修改,未失真的图像总是以与输入图像相同的图片大小存储 如果我使用opencv提供的图片之一作为输入图像,结果与预期一致。未失真图像按预期生成 但如果我用自己的照片,我会得到以下结果: 很抱歉,无法上载我的输入图片(图片大小相同),因为声誉不佳:-( 结果如下: RMS: 0.121159225738 camera matrix: [[ 163.2395
RMS: 0.121159225738
camera matrix:
[[ 163.23957898 0. 322.26349617]
[ 0. 216.31952935 234.94645994]
[ 0. 0. 1. ]]
distortion coefficients: [-0.08196739 0.03332906 0.01195436 0.00803256 -0.02955244]
x: (0, 0, 0, 0)
y 0
w 0
h 0
我已经在这个论坛上读到,在这种情况下,失真系数应该被覆盖,但我不明白为什么?
我已经做了一些测试来处理这些值,但是我找不到一个使用输入图像的所有像素和黑色部分显示未失真图像的设置
非常感谢所有提示
THANX!!在您的相机矩阵中,fx(163.2395)和fy(216.3195)非常不同是很奇怪的。通常,只要您使用的是方形像素传感器,它们应该非常接近,这在使用数码相机时占99%
在您的图片中,网格实际上看起来不像正方形。请确保棋盘格打印具有方形网格,因为这是opencv校准的要求。使用多个图像,并确保几乎覆盖所有这些图像的整个图像。根据我的经验,校准解决优化只会优化覆盖的图像区域,所以它周围的一切可能会得到非常强烈的扭曲(而覆盖的区域是非常直的不失真)。谢谢你的支持!!!我只是拍了更多的照片(将近150张)然后再次运行测试。结果比以前好,但不幸的是失真不能满足我。谢谢你的支持!!!我只拍了更多的照片(将近150张)然后再次运行测试。结果比以前更好,但不幸的是,失真不能满足我的要求。棋盘的角仍然不垂直。FOV约为120°,我发现opencv也支持鱼眼校准,但我没有找到任何信息,建议使用鱼眼校准或“正常校准”?您还有其他建议可以改进我的结果吗?再次感谢!!