我正在尝试进行相机校准,我已经从开放的cv文档中获取了代码。这是我的代码 -
sessionId
在此代码图像中,2.jpg用于校准,
This is the image considered for understanding of calibration
我的代码只检测此图像的角落。它与其他棋盘图像无法正常工作。它无法检测角落。为什么会这样?
答案 0 :(得分:2)
不幸的是,我没有足够的声誉来评论和阐明一些观点。但是,无论如何我都会尝试回答。假设您已添加print(ret)
,那么我想这就是您的问题所在。
您似乎在cv2.findChessboardCorners(gray, (7, 6))
中使用了错误的棋盘大小。我发现给定错误的输入尺寸值,此函数返回False
。
objp
对象也是如此。
鉴于图像,您所显示的应该是n-1
和m-1
(其中n
和m
是棋盘格尺寸)。
对于您给定的图片,该图片应为cv2.findChessboardCorners(gray, (9, 6))
opencv calibration example棋盘上的通知是8x7,因此输入值为7x6。
答案 1 :(得分:0)
关于“相机校准”方法的问题是,有时它无法识别不是最大尺寸的棋盘格。您最有可能选择8,6或9,5作为大小。但是,对于6,7,差异太大,因此该方法无法识别。
我没有任何研究资料,但我之前已经对它进行了测试。