将python2迁移到3 IndexError:只有整数、切片(`:`)、省略号(`...`)、numpy.newaxis(`None`)和整数或布尔数组是有效索引

nbysray5  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(203)

所以我尝试将遗留的python2脚本迁移到python3,但我在一些代码上出错

print ('resizing images')
for x in range(0, len(img)):
    imgResized.append(cv2.resize(img[x], (301 * len(img), 301)))

print ('resizing done')
source = interlace(imgResized, 301 * len(img), 301 * len(img))
cv2_im = cv2.cvtColor(source, cv2.COLOR_BGR2RGB)

所以我在source = interlace(imgResized, 301 * len(img), 301 * len(img))上得到了一个错误,它与do的函数相互干扰

def interlace(img, h, w):
    inter = np.empty((h, w, 3), img[0].dtype)
    for i in range(h - 1):
        val = i % NUM_FRAMES
        print('index') 
        print(img[val])
        inter[i, :, :] = img[val][i / NUM_FRAMES, :, :]
    return inter

在交错函数上,误差来自inter[i, :, :] = img[val][i / NUM_FRAMES, :, :]
这是完整的stacktree

Traceback (most recent call last):
  File "/Users/sagara/Downloads/Printing Script/mnd_75 (latest).py", line 171, in <module>
    source = interlace(imgResized, 301 * len(img), 301 * len(img))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sagara/Downloads/Printing Script/mnd_75 (latest).py", line 126, in interlace
    inter[i, :, :] = img[val][i / NUM_FRAMES, :, :]
                     ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

并且print('index')print(img[val])的打印控制台得到了这个值

index
[[[239 236 238]
  [240 237 240]
  [247 245 246]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[211 208 210]
  [215 212 214]
  [233 230 232]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[229 227 228]
  [232 229 231]
  [242 240 242]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 ...

 [[149 151 152]
  [159 161 162]
  [200 202 203]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[156 158 159]
  [166 168 169]
  [204 206 207]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[128 129 131]
  [140 142 143]
  [190 192 192]
  ...
  [255 255 255]
  [255 255 255]
  [255 255 255]]]

这可能是因为img[瓦尔]的值不正确?

yh2wf1be

yh2wf1be1#

问题是i / NUM_FRAMESfloat。您需要使用int()函数或整数除法运算符//强制转换为整数

i // NUM_FRAMES

相关问题