所以我尝试将遗留的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[瓦尔]的值不正确?
1条答案
按热度按时间yh2wf1be1#
问题是
i / NUM_FRAMES
是float
。您需要使用int()
函数或整数除法运算符//
强制转换为整数