cv2.findChessboardCorners()

该函数试图确定输出图片是否有棋盘图案,并定位棋盘板上的角点。
如果所有的角点被找到且以肯定的顺序排列,该函数会返回一个非零值。
而如果该函数没有找到所有的角点或者重新排列他们,则返回0。

参数:image:    输出原始的棋盘板图像。该图像必须是一张8位的灰度图或色调图。patternSize:(w,h),    棋盘上每一排和每一列的内角数。    w=棋盘板一行上黑白块的数量-1,h=棋盘板一列上黑白块的数量-1,    例如:10x6的棋盘板,则(w,h)=(9,5)corners:array,    检测到的角点的输入数组。flags:int,    不同的操作标记,可能为0,None或者下述值的组合:    CALIB_CB_ADAPTIVE_THRESH:        应用自适应阈值法把图像转换为黑白图,而不是应用一个固定的阈值。    CALIB_CB_NORMALIZE_IMAGE:        在利用固定阈值或自适应阈值法二值化图像之前,利用直方图均衡化图像。    CALIB_CB_FILTER_QUADS:        应用额定的规范(如轮廓面积,周长,正方形形态)来过滤掉在轮廓检索阶段提取的假四边形。    CALIB_CB_FAST_CHECK:        对图像运行一个疾速查看机制以查找棋盘板的角点,        如果没有找到角点则返回一个快捷揭示。        当没有察看到棋盘时,能够极大地放慢在进化条件下的调用。

实际:

试着对以下图片进行操作:

import numpy as npimport cv2import matplotlib.pyplot as pltimport matplotlib.image as mpimgfname='calibration_test.png'image=cv2.imread(fname)# plt.imshow(image)# plt.show()gray=cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)plt.imshow(gray,cmap='gray')plt.show()# Find the chessboard cornersnx=8ny=6ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None)print('ret:',ret)# print(len(corners))# If found, draw cornersif ret == True:    # Draw and display the corners    cv2.drawChessboardCorners(image, (nx, ny), corners, ret)    plt.imshow(image)