dyfcalid / CameraCalibration

Fisheye or Normal Camera Intrinsic and Extrinsic Calibration. Surround Camera Bird Eye View Generator.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cv2.findChessboardCorners() 无法检测出角点

Kartoffelchen opened this issue · comments

您好,首先非常感谢你的repo,非常不错。
我的问题是,无法检测棋盘格的角点,不知道为什么。我是在做一个相机仿真的应用,已经仿真渲染出来了棋盘格的图片了,计划在这个仿真的图片上进行相机校准,但是不知道为什么,就是无法识别仿真的棋盘格的角点。我也猜想是不是仿真图片的颜色不对导致的,这方面会不会呢?比如棋盘格黑色和白色的差别不是那么大,所以中间处理的时候会有问题?不知道您有没有遇到过这种情况,无法检测角点。
这时已掌握用的渲染的图片:
0_ProjectorImg2

需要根据棋盘格的长宽方向的内角点数 更改传入cv2.findChessboardCorners()的参数 例如图中应该是9*9 即cv2.findChessboardCorners(img,(9,9)) 具体参照opencv的官方文档(另外建议棋盘格的长宽最好不要一样)

好的。多谢,我试试

您好,重新测试了一些数据,前面的问题基本都解决了,不过我有了一个新的问题。
对于包含畸变地像及模型,是不是能够有这样的可能,可以有不同的相机内参与畸变系数的组合,都符合相机标定的结果?因为我是做仿真,所以可以自由设定相机内参和畸变系数,在我的测试中,对于没有畸变的数据,标定的相机内参和设定值都非常接近;然而对于有畸变的数据,标定的内参和畸变系数都和我设定的相差较大,所以我就在想,是不是一个相机可以有不同的内参和畸变的组合能够描述它?不知道您有没有想过或者遇到过这个问题呢?

相机的内参是确定的,取决于实际的焦距和光轴位置。畸变是通过假定的多项式函数来拟合,各项系数就是畸变向量,当然可以有不同的结果(来使得拟合的误差足够小)。因为求解畸变向量的过程是通过非线性优化,不同的初值和迭代过程都会使得结果不同,也必然存在误差,一般通过重投影误差来衡量。所以对于有畸变的数据,也需要足够多的图片达到比较好的标定效果,例如各种角度、距离,并覆盖到图像的各个区域等等。