cv2.fillPoly(mask, [np.int32(circle)], 0) TypeError: pts is not a numpy array, neither a scalar
时间: 2024-03-05 12:52:46 浏览: 56
Graphics.h教程
5星 · 资源好评率100%
这个错误通常是由于`pts`参数不是正确的`numpy`数组引起的。`cv2.fillPoly()`函数需要的`pts`参数应该是一个`numpy`数组列表,表示要填充的多边形区域。每个多边形应该表示为一个数组,其中每一行都是多边形中的一个点的坐标。
你可以尝试使用以下代码,将`circle`转换为一个数组,再将其传递给`cv2.fillPoly()`函数:
```python
# 填充圆形区域
mask = np.zeros_like(img)
for circle in circles[0]:
circle = np.int32(circle)
pts = cv2.ellipse2Poly((circle[0], circle[1]), (circle[2], circle[2]), 0, 0, 360, 10)
cv2.fillPoly(mask, [pts], 0)
```
在这个代码中,我们首先将`circle`转换为`numpy`整型数组,然后使用`cv2.ellipse2Poly()`函数计算圆形的多边形表示形式。最后,我们将多边形传递给`cv2.fillPoly()`函数。
希望这可以解决你的问题!
阅读全文