python获取图像内棋盘格所有的角点坐标并对其进行排序
时间: 2023-08-18 10:24:59 浏览: 227
获取图像内棋盘格所有的角点坐标可以通过OpenCV库中的函数`findChessboardCorners()`实现,其中需要指定棋盘格的行数、列数和角点数目,示例代码如下:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread("chessboard.jpg")
# 棋盘格行数和列数
rows = 7
cols = 7
# 寻找棋盘格角点
ret, corners = cv2.findChessboardCorners(img, (rows, cols), None)
# 对角点坐标进行排序
corners = np.squeeze(corners)
corners = corners[np.argsort(corners[:, 1])]
corners = np.array([corners[i:i+rows] for i in range(0, len(corners), rows)])
corners = np.concatenate([corners[i] for i in range(0, len(corners), 2)], axis=0)
corners = np.concatenate([corners[i:i+cols][np.argsort(corners[i:i+cols][:, 0])] for i in range(0, len(corners), cols)], axis=0)
# 显示角点
for corner in corners:
x, y = corner.ravel()
cv2.circle(img, (x, y), 3, (0, 0, 255), -1)
# 显示图像
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在对角点坐标进行排序时,我们先将所有的角点按照y坐标排序,然后将排序后的角点按照行进行划分,每两行为一组,分别将两组中的角点按照x坐标排序并合并,最终得到的就是排序后的角点坐标。
阅读全文