for i, _ in enumerate(im[start_y:(height * 2) / 3]): TypeError: argument must be sequence of length 2
时间: 2024-02-19 17:02:41 浏览: 158
这个错误是因为在`enumerate`函数中传入了一个长度不为2的序列。根据错误提示,这个序列应该是一个长度为2的序列,但是原来的代码中传入的是一个长度为1的序列`(height * 2) / 3`。
解决这个问题的方法是将`(height * 2) / 3`改为一个长度为2的序列,表示切片的开始和结束位置。例如可以将代码修改为:
```
for i, _ in enumerate(im[start_y:int((height * 2) / 3), :]):
start_point = im[0, i]
if x2 or y2:
break
x2_temp = 0
x2_num = 0
for j, _ in enumerate(im[i, :]):
next_point = im[j, i]
if abs(j - x1) < body_width:
continue
# 棋盘为圆
if abs(next_point[0] - start_point[0]) + abs(next_point[1] - start_point[1]) + abs(next_point[2] - start_point[2]) > 10:
x2_temp += j
x2_num += 1
if x2_temp:
x2 = x2_temp / x2_num
```
这样就可以解决这个错误了。需要注意的是,在修改切片的时候,需要在行和列之间用逗号隔开,这样才能正确地表示切片的开始和结束位置。
阅读全文