请筛棋盘格图像中的所有角点信息python
时间: 2023-12-03 07:44:57 浏览: 37
可以使用OpenCV库中的`cornerHarris`函数来检测角点信息。以下是一个示例代码:
```python
import cv2
import numpy as np
# 读入图像
img = cv2.imread('chessboard.png')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用cornerHarris函数检测角点
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
# 使用dilate函数增强角点
dst = cv2.dilate(dst, None)
# 根据阈值筛选角点
threshold = 0.01 * dst.max()
corners = np.where(dst > threshold)
# 绘制角点
for i in range(len(corners[0])):
x = corners[1][i]
y = corners[0][i]
cv2.circle(img, (x, y), 5, (0, 255, 0), 2)
# 显示结果
cv2.imshow('corners', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cornerHarris`函数的参数含义如下:
- `gray`:输入的灰度图像;
- `2`:表示计算角点响应时使用的窗口大小,一般取值为2或3;
- `3`:表示Sobel算子的参数,一般取值为3;
- `0.04`:表示角点响应函数的参数,一般取值为0.04到0.06之间。
`dilate`函数用于增强角点,`threshold`为阈值,用于筛选角点。最后使用`circle`函数绘制角点。