cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'circle' > Overload resolution failed: > - Can't parse 'center'. Sequence item with index 0 has a wrong type
时间: 2023-08-28 13:49:37 浏览: 1810
openCV常见的格式错误
抱歉,出现了错误。根据错误信息,看起来是在绘制圆形时出现了问题。这可能是由于传递给 `cv2.circle()` 函数的参数类型不正确导致的。
请确保传递给 `cv2.circle()` 函数的参数 `center` 是一个元组,其中第一个元素表示圆心的 x 坐标,第二个元素表示圆心的 y 坐标。你可以使用 `tuple` 函数将 `x` 和 `y` 转换为元组,并传递给 `cv2.circle()` 函数。
下面是修正后的代码示例:
```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.ravel()
print(f"Corner coordinate: ({x}, {y})")
# 在图像上绘制角点
corners = np.int0(corners)
for corner in corners:
x, y = corner.ravel()
center = tuple([x, y]) # 将 x 和 y 转换为元组
cv2.circle(image, center, 3, (0, 255, 0), -1)
# 显示标记了角点的图像
cv2.imshow("Corners", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 调用函数进行角点检测和输出坐标值
image_path = 'image.jpg'
detect_corners(image_path)
```
请尝试使用这个修正后的代码,并确保传递给 `cv2.circle()` 函数的参数类型正确。如果还有其他问题,请随时提问。
阅读全文