用opencv findchessboardcorners写一个识别棋盘图片的角点实例
时间: 2024-03-01 11:52:24 浏览: 34
好的,以下是一个用 OpenCV 的 `findChessboardCorners` 函数识别棋盘图片的角点的实例代码:
```python
import cv2
import numpy as np
# 读取棋盘图片
img = cv2.imread('chessboard.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 设置棋盘格的行列数
rows = 7
cols = 7
# 寻找棋盘格角点
ret, corners = cv2.findChessboardCorners(gray, (rows, cols), None)
# 如果找到了棋盘格角点
if ret == True:
# 亚像素级角点检测
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
corners = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
# 绘制角点
cv2.drawChessboardCorners(img, (rows, cols), corners, ret)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
print('未找到棋盘格角点')
```
在代码中,我们首先读取了一张棋盘图片,并将其转换为灰度图像。接着,我们使用 `cv2.findChessboardCorners` 函数寻找棋盘格角点。如果找到了角点,我们再使用亚像素级角点检测进行优化,并最终绘制角点。
注意:在使用 `cv2.findChessboardCorners` 函数时,需要指定棋盘格的行列数。如果找到了棋盘格角点,函数会返回一个布尔值 `True` 和一个包含所有角点坐标的数组。如果没有找到,函数会返回一个布尔值 `False`。