此行出现错误“ res = res / 255.0” TypeError:/不支持的操作数类型:“ NoneType”和“ float”

时间:2019-10-07 13:49:04

标签: python-3.x opencv tensorflow image-processing

我正在尝试重塑图像,然后再发送模型以使用Tensorflow(v-2.0),Opencv(v-'3.4.2')和python(v-3.6)来预测图像的哪个位数,但出现错误“ TypeError:/:“ NoneType”和“ float””不受支持的操作数类型。

   path=cv2.imread('/home/farhana/Desktop/image processing/code/7.jpg')
     img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)
     res=img
     res = res / 255.0
     res = res.resize(28,28)
     res = res.reshape((len(img), 28, 28,1))
     res = res.reshape(28,28,1)

2 个答案:

答案 0 :(得分:0)

确保path是所需输入文件的有效路径。您可以检查例如与

import os
path = '/home/farhana/Desktop/image processing/code/7.jpg'
os.path.isfile(path)
# --> should give you
True

然后使用

import cv2
import numpy as np

img = cv2.imread(path, cv2.IMREAD_GRAYSCALE).astype(np.float64)/255
resized_img = cv2.resize(img, (28, 28)).reshape(28, 28, 1)

答案 1 :(得分:0)

问题在于以下三行:

path=cv2.imread('/home/farhana/Desktop/image processing/code/7.jpg')
img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)
res=img

在第一行中,您读取了一个图像文件,并将图像对象存储在(重命名)变量path中。

在第二行中,将图像对象从第一次调用传递到imread,作为到另一个调用imread的路径。由于图像对象实际上不是路径,因此第二次调用将失败并返回None

然后,最后一行使res引用第二次调用None返回的imread对象,由于它是None,因此不能用于任何操作。

似乎不应该第二次调用imread