2021-03-03 Python OpenCV findChessboardCorners()函数

findChessboardCorners(image,patternSize,corners,flags = None)

此函数试图确定输入图片是否有棋盘图案,并定位棋盘板上的角点。如果所有的角点被找到且以一定的顺序排列(一行接一行,从一行的左边到右边),该函数会返回一个非零值。另外,如果该函数没有找到所有的角点或者重新排列他们,则返回0。

参数

  1. image:输入原始的棋盘板图像。该图像必须是一张8位的灰度图或色彩图。

  2. patternSize:(w,h),棋盘上每一排和每一列的内角数。w=棋盘板一行上黑白块的数量-1,h=棋盘板一列上黑白块的数量-1,例如:10x6的棋盘板,则(w,h)=(9,5)

  3. corners:array,检测到的角点的输出数组。

  4. flags:int,不同的操作标记,能够为0或者下述值的组合:

    • CALIB_CB_ADAPTIVE_THRESH 使用自适应阈值法把图像转换为黑白图,而不是使用一个固定的阈值。

    • CALIB_CB_NORMALIZE_IMAGE 在利用固定阈值或自适应阈值法二值化图像之前,利用直方图均衡化图像。

    • CALIB_CB_FILTER_QUADS 使用额外的标准(如轮廓面积,周长,正方形形状)来过滤掉在轮廓检索阶段提取的假四边形。

    • CALIB_CB_FAST_CHECK 对图像运行一个快速检查机制以查找棋盘板的角点,如果没有找到角点则返回一个快捷提醒。当没有观察到棋盘时,可以极大地加快在退化条件下的调用。

测试

ret, cp_img = cv2.findChessboardCorners(gray_img, (w1,h1), None)
cv2.drawChessboardCorners(img, (w1,h1), cp_img, ret)
cv2.imwrite("test.jpg",img)
原图片

标注出角点的图片
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。