Python 2.7 属性错误:';非类型';对象没有属性';形状';使用OpenCV
我正在阅读安装在谷歌colab上的谷歌硬盘上的图片。我有两个文件夹,一个是新冠病毒-19阳性胸部x光片,另一个是正常胸部x光片。我试着把这些图片并排展示,以便比较。以下是代码和错误的图像: 以下是编写的代码:Python 2.7 属性错误:';非类型';对象没有属性';形状';使用OpenCV,python-2.7,opencv,machine-learning,artificial-intelligence,object-detection,Python 2.7,Opencv,Machine Learning,Artificial Intelligence,Object Detection,我正在阅读安装在谷歌colab上的谷歌硬盘上的图片。我有两个文件夹,一个是新冠病毒-19阳性胸部x光片,另一个是正常胸部x光片。我试着把这些图片并排展示,以便比较。以下是代码和错误的图像: 以下是编写的代码: Cimages = ('/content/drive/My Drive/Data/Covid') Nimages = ('/content/drive/My Drive/Data/Normal') import skimage from skimage.transform impor
Cimages = ('/content/drive/My Drive/Data/Covid')
Nimages = ('/content/drive/My Drive/Data/Normal')
import skimage
from skimage.transform import resize
def plot(i):
normal = cv2.imread(dataset +'Normal//' + Nimages[i])
normal = skimage.transform.resize(normal, (150,150,3))
covid = cv2.imread(dataset +'Covid//' + Cimages[i])
covid = skimage.transform.resize(normal, (150,150,3), mode = reflect)
pair = np.concatenate((normal, covid), axis = 1)
print('Normal vs. Covid')
plt.figure(figsize=(10,5))
plt.imshow(pair)
plt.show()
for i in range(0,3):
plot(i)
这给了我一个错误:
AttributeError Traceback (most recent call last)
<ipython-input-52-237aff042641> in <module>()
1 for i in range(0,3):
----> 2 plot(i)
<ipython-input-50-85bb2e03725c> in plot(i)
3 def plot(i):
4 normal = cv2.imread(dataset +'Normal//' + Nimages[i])
----> 5 normal = skimage.transform.resize(normal, (150,150,3))
6 covid = cv2.imread(dataset +'Covid//' + Cimages[i])
7 covid = skimage.transform.resize(normal, (150,150,3), mode = reflect)
/usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py in resize(image, output_shape, order, mode, cval, clip, preserve_range, anti_aliasing, anti_aliasing_sigma)
89 output_shape = tuple(output_shape)
90 output_ndim = len(output_shape)
---> 91 input_shape = image.shape
92 if output_ndim > image.ndim:
93 # append dimensions to input_shape
AttributeError回溯(最近一次调用)
在()
1表示范围(0,3)内的i:
---->二、地块(一)
第(一)部分
3 def绘图(一):
4 normal=cv2.imread(数据集+'normal/'+Nimages[i])
---->5法线=浏览、变换、调整大小(法线,(150150,3))
6 covid=cv2.imread(数据集+'covid/'+Cimages[i])
7 covid=浏览、变换、调整大小(正常,(150150,3),模式=反射)
/usr/local/lib/python3.6/dist-packages/skimage/transform//u warps.py调整大小(图像、输出形状、顺序、模式、cval、剪辑、保留范围、抗锯齿、抗锯齿)
89输出形状=元组(输出形状)
90输出ndim=len(输出形状)
--->91输入_形状=image.shape
92如果输出>image.ndim:
93#将尺寸附加到输入#形状
AttributeError:“非类型”对象没有属性“形状”
因此,它似乎出现在代码的skiliage.tranform.resize行中。请提供帮助。问题不在于功能
skimage.tranform.resize
但是随着图像的阅读
normal=cv2.imread(数据集+'normal/'+Nimages[i])
不确定您想在那里做什么,但是Nimages[i]
不会给您文件夹中的第一个文件,但它会产生字符串的第一个字符,在您的情况下/
。然后您将发送数据集
变量+正常/
+/
,这基本上就是您的情况正常//
,然后您将尝试读取该路径上的图像,但毫无疑问,那里没有图像,在这种情况下opencv
将返回给您无
(基本上没有)。然后尝试使用skimage
调整None
的大小,这将失败
更好的选择是直接读取图像,或者在某种程度上看起来像这样的循环中读取图像:
从操作系统导入listdir
从os.path导入isfile,加入
onlyfiles=[f表示listdir(Nimages)中的f,如果isfile(join(Nimages,f))]
对于仅文件中的图像路径:
normal=cv2.imread(连接(图像、图像路径))
法线=撇除、变换、调整大小(法线,(150150,3))
假设您提到的目录中只有图像。尝试添加代码段,而不是您可以看到的图像。我同时添加了这两个代码段。有代码和错误的图片,还有代码片段。