Traceback (most recent call last): File "D:\python project\tommyself.py", line 28, in <module> borders = cv2.boxPoints(borders) cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'boxPoints' > Overload resolution failed: > - Can't parse 'box' as RotatedRect. Expected sequence length 3, got 4 > - Can't parse 'box' as RotatedRect. Expected sequence length 3, got 4 这段代码出现了以下报错应该怎么改
时间: 2024-02-18 20:04:47 浏览: 29
这个报错可能是因为 `cv2.boundingRect()` 返回的 `borders` 数组长度不正确,导致在调用 `cv2.boxPoints()` 函数时出错。
你可以检查一下 `borders` 数组的长度是否为 4,如果是的话,你可以尝试修改代码为:
```
# 获取边框
x, y, w, h = cv2.boundingRect(opened)
borders = np.array([[x, y], [x, y+h], [x+w, y+h], [x+w, y]])
# 绘制边框线
cv2.polylines(frame, [borders], True, (0, 0, 255), 2)
# 获取边框线坐标
points = borders.reshape(4, 2)
```
这里使用 `cv2.boundingRect()` 函数返回的矩形的左上角坐标 `(x, y)`、宽度 `w` 和高度 `h` 来计算边框的四个顶点坐标,然后将这些坐标存储在一个 4x2 的数组中,并将其传递给 `cv2.polylines()` 函数来绘制边框线。
如果上述方法还是无法解决问题,你可以尝试升级 OpenCV 版本或者尝试其他的解决方案。
相关问题
Traceback (most recent call last): File "D:\代码文件夹\pythonProject\hello.py", line 95, in <module>
Traceback (most recent call last): File "D:\代码文件夹\pythonProject\hello.py", line 95, in <module> 是Python解释器在运行程序时遇到错误时输出的一种错误信息。它会显示出错的文件名、行号以及出错的代码行。在这个例子中,错误发生在文件 "D:\代码文件夹\pythonProject\hello.py" 的第95行。这意味着在该行的代码中出现了错误。
为了更好地理解和解决这个问题,我们需要查看该行代码的具体内容以及前面的上下文。请提供更多关于该行代码的信息,以便我能够给出更准确的回答。
Traceback (most recent call last): File "D:\Python3.8\pythonProject\main.py", line 7, in <module> sheet =wb.worksheets[2] IndexError: list index out of range
这个错误通常表示您正在尝试访问一个列表中不存在的索引位置。您可以通过检查列表的长度来确保索引在有效范围内。在这种情况下,它可能是由于工作簿中的工作表数量不足导致的。
您可以使用以下代码来检查工作表的数量并确保索引在范围内:
```python
sheet_count = len(wb.worksheets)
if sheet_count > 2:
sheet = wb.worksheets[2]
else:
print("工作表数量不足")
```
请注意,上述代码假设 `wb` 是一个有效的工作簿对象。您可能需要根据您的代码进行相应的调整。