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 np
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
fname='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 corners
nx=8
ny=6
ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None)
print('ret:',ret)
# print(len(corners))
# If found, draw corners
if ret == True:
# Draw and display the corners
cv2.drawChessboardCorners(image, (nx, ny), corners, ret)
plt.imshow(image)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。