【问题标题】:Getting an error this line "res = res / 255.0" TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'在“res = res / 255.0”这一行出现错误 TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
【发布时间】:2020-02-04 19:56:42
【问题描述】:

我试图在发送模型之前重塑图像以预测它使用 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)

【问题讨论】:

  • 错误检查至关重要。几乎所有文件操作都可能失败,并且由于某种原因,当您不检查错误时往往会失败。
  • 我检查了图像是否在那个确切的目录中,但实际上不明白问题所在。
  • @Someprogrammerdude:有趣的是,cv2.imread(None, cv2.IMREAD_GRAYSCALE) 只是返回 None,而不会引发错误。
  • 多想想path=cv2.imread("0.jpg") 以及你如何使用path...path 真的是图像文件的路径吗?

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


【解决方案1】:

问题在于这三行:

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引用第二次调用imread返回的None对象,因为它是None,所以不能用于任何操作。

似乎不应该发生对imread 的第二次调用。

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 2021-09-12
    • 2020-10-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多