【发布时间】:2021-05-19 08:59:14
【问题描述】:
我在视觉应用程序中使用 cv2 findChessBoardCorners 进行相机校准。我对函数的调用如下所示:
def auto_detect_checkerboard(self, image):
retval, corners = cv2.findChessboardCorners(image, (7, 7), flags=cv2.CALIB_CB_ADAPTIVE_THRESH
+ cv2.CALIB_CB_EXHAUSTIVE)
if(retval):
return corners[0][0], corners[0][1]
else:
print("No Checkerboard Found")
assert False
但到目前为止我尝试过的所有图像似乎都找不到任何角落。我用过的最简单的例子是
我使用该功能有问题吗?还是我需要在预处理中处理的图像有问题?
到目前为止,我已经尝试转换为灰度,并应用了高斯滤镜,但似乎都没有产生任何影响。
【问题讨论】:
-
当您尝试使用
cv.findChessboardCorners(image, (7,7), None)时?此外,当您将 (7,7) 更改为 3,6 或 6,7 时,结果仍然没有变化? -
尝试使用
return corners[0][0], corners[1][0]。corners[0][1]给我一个错误。但是代码检测到 49 个角。问题可能出在您未发布的代码中。 -
@YunusTemurlenk 我已经尝试不使用额外的标志,它没有什么不同,在寻找更小的棋盘格时它更成功,但实际上我的应用程序需要我能够检测到整个事情。
-
@Rotem 你是对的,我访问角落的方式有误,但这似乎不是全部问题。由于没有检测到板子,它仍然经常根本没有碰到那个代码块。
标签: python opencv computer-vision calibration