corners应为类型 'collections.Iterable',但实际为 'long'
时间: 2023-12-26 15:03:31 浏览: 81
CSS-rounded-corners.rar_rounded-corners.css
抱歉,我之前的回答有误。`corners` 是一个 Numpy 数组,可以直接进行迭代,无需使用 `corner.ravel()`。这里是修正后的代码:
```python
import cv2
import numpy as np
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)
# 输出每个角点的坐标值
for corner in corners:
x, y = corner[0]
print(f"Corner coordinate: ({x}, {y})")
# 在图像上绘制角点
corners = np.int0(corners)
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)
```
在这个修正后的代码中,我们直接使用 `corner[0]` 获取角点的坐标。这样就可以正确地输出每个角点的坐标值,并在图像上绘制出角点。希望这次能解决你的问题。如果还有其他疑问,请随时提问。
阅读全文