通过opencv写一个检测棋盘格内角点的算法
时间: 2024-04-29 08:25:39 浏览: 118
1. 导入必要的库和模块
```python
import cv2
import numpy as np
```
2. 读取图片并将其转换为灰度图
```python
img = cv2.imread('chessboard.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
```
3. 设置棋盘格的行和列数
```python
rows = 6
cols = 7
```
4. 通过cv2.findChessboardCorners()函数检测棋盘格内角点
```python
ret, corners = cv2.findChessboardCorners(gray, (rows,cols), None)
```
5. 如果检测到了棋盘格内角点,则将其绘制出来
```python
if ret == True:
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
img = cv2.drawChessboardCorners(img, (rows,cols), corners2,ret)
```
完整代码:
```python
import cv2
import numpy as np
img = cv2.imread('chessboard.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
rows = 6
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)
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
img = cv2.drawChessboardCorners(img, (rows,cols), corners2,ret)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文