我正在尝试使用 OpenCV 找到棋盘的角落。
我使用的图像包含两个棋盘,但我只对其中一个的子区域感兴趣。下图显示了原始图像。
使用 GIMP,我选择了感兴趣的区域,并将所有其他像素设置为默认值。
我实际上并没有裁剪图像,因为我已经使用此图像尺寸校准了相机并且我不想更改它。该操作应该等同于更改图像矩阵中的值,但我更喜欢使用 GIMP 进行操作。这是一个一次性的实验,使用图形工具而不是使用代码执行该操作更快。
生成的图像包含一个 24x5 角的棋盘,但函数 findChessboardCorners 找不到任何东西。
这是我正在使用的 Python 代码:
>>> img = cv2.imread('C:\\Path\\To\\C4-Cropped.png', 0)
>>> cv2.findChessboardCorners(img, (24, 5))
(False, None)
>>> cv2.findChessboardCorners(img, (5, 24))
(False, None)
我也尝试设置自适应阈值,但它仍然无法正常工作
>>> cv2.findChessboardCorners(img, (24, 5), flags=cv2.cv.CV_CALIB_CB_ADAPTIVE_THRESH)
(False, None)
这似乎真的很奇怪。我过去多次使用 OpenCV 的这个功能,它总是有效,即使图像看起来比这个复杂得多。该区域的照明不是均匀的,但功能应该足够强大以处理它。
使用 GIMP 临时创建的人工图像有什么问题吗?我怎样才能找到角落?
任何建议将不胜感激。