我正在尝试从此repo运行模型。并收到以下错误:
Traceback (most recent call last):
File "denet_glaucoma_screen/Demo_DENet_GlaucomaScreen.py", line 72, in <module>
org_img = np.array(Image.fromarray(org_img).resize((2048, int(org_img.shape[1] * img_scale))).convert(3))
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 975, in convert
im = self.im.convert(mode, dither)
TypeError: argument 1 must be str, not int
我相信导致错误的部分是这样的:
for lineIdx, file_test in enumerate(file_test_list):
temp_txt = [elt.strip() for elt in file_test.split(',')]
org_img = np.asarray(image.load_img(os.path.join(data_img_path,
temp_txt[0])))
img_scale = 2048.0 / org_img.shape[0]
org_img = np.array(Image.fromarray(org_img).resize((2048, int(org_img.shape[1] * img_scale))).convert(3))
看着Image.convert,我不知道为什么在那边会有3
我尝试将3
更改为"3"
,"RGB"
,甚至取消了整个convert
的位置,但是遇到了类似unable to process that type of data
或类似的东西。
我尝试更改行:
org_img = np.array(Image.fromarray(org_img).resize((2048, int(org_img.shape[1] * img_scale))).convert(3))
到
org_img = np.array(Image.fromarray(org_img).resize((2048, int(org_img.shape[1] *img_scale), 3)))
但是我遇到了以下错误:
File "denet_glaucoma_screen/Demo_DENet_GlaucomaScreen.py", line 74, in <module>
img_scale), 3)))
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 1745, in resize
return self._new(self.im.resize(size, resample, box))
TypeError: argument 1 must be sequence of length 2, not 3
org_img = np.array(Image.fromarray(org_img).resize((2048, int(org_img.shape[1] * img_scale), 3)), mode='RGB')
File "denet_glaucoma_screen/Demo_DENet_GlaucomaScreen.py", line 74, in <module>
img_scale), 3)), mode='RGB')
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 1745, in resize
return self._new(self.im.resize(size, resample, box))
TypeError: argument 1 must be sequence of length 2, not 3
org_img = np.array(Image.fromarray(org_img, mode='RGB').resize((2048, int(org_img.shape[1]*img_scale), 3)))
但是我遇到了以下错误:
File "denet_glaucoma_screen/Demo_DENet_GlaucomaScreen.py", line 73, in <module>
org_img = np.array(Image.fromarray(org_img, mode='RGB').resize((2048, int(org_img.shape[1]*img_scale), 3)))
File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 1745, in resize
return self._new(self.im.resize(size, resample, box))
TypeError: argument 1 must be sequence of length 2, not 3
答案 0 :(得分:1)
您从原始存储库错误地更改了代码。这就是他们为org_img
所拥有的:
org_img = scipy.misc.imresize(org_img, (2048, int(org_img.shape[1]*img_scale), 3))
imresize
中的scipy
已贬值。如果查看旧的scipy
函数的代码和文档,您会发现它们正在为数组传递org_img
和为大小传递(2048, int(org_img.shape[1]*img_scale), 3)
,即3是数组的一部分。指定调整大小的元组-他们没有像尝试在代码中那样将其用作mode
进行转换。
由于这是3D模式,因此根据调整大小的3个维度,scipy
文档说:
对于3-D和4-D阵列,模式将分别设置为'RGB'和'RGBA'。
所以你想要
numpy.array(Image.fromarray(org_img, mode='RGB').resize((2048, int(org_img.shape[1]*img_scale))))