这段代码只实现了标记角点,但怎么样才能输出每个角点的坐标值呢?
时间: 2024-04-07 19:30:14 浏览: 4
要输出每个角点的坐标值,你可以在标记角点的代码中添加一些逻辑来保存角点的坐标。下面是一个示例代码,演示如何实现这一功能:
```python
import cv2
def detect_corners(image_path):
# 读取图像
image = cv2.imread(image_path)
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 检测角点
corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 10)
corners = np.int0(corners)
# 输出每个角点的坐标值
for corner in corners:
x, y = corner.ravel()
print(f"Corner coordinate: ({x}, {y})")
# 在图像上绘制角点
for corner in corners:
x, y = corner.ravel()
cv2.circle(image, (x, y), 3, (0, 255, 0), -1)
# 显示标记了角点的图像
cv2.imshow("Corners", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 调用函数进行角点检测和输出坐标值
image_path = 'image.jpg'
detect_corners(image_path)
```
这段代码中,我们在 `detect_corners` 函数中添加了一个循环,用于遍历每个角点并输出它们的坐标值。通过 `corner.ravel()` 方法,我们可以获得角点的 x 和 y 坐标,然后使用 `print` 函数将它们打印出来。
请注意,这只是一个示例,你可能需要根据你的具体需求进行修改。