为啥未定义 selectedimage?

Posted

技术标签:

【中文标题】为啥未定义 selectedimage?【英文标题】:Why is selectedimage not defined?为什么未定义 selectedimage? 【发布时间】:2020-05-12 11:36:06 【问题描述】:

我一直试图确定为什么,当我运行程序时,它说所选图像未定义,而当我查看代码时似乎已定义。

有问题的错误是:

NameError: name 'selectedimage' is not defined

我正在使用 streamlit,一个在线 GUI 生成器。

if st.sidebar.button("Identify"):
    selectedimage = "./AI_TESTING_DATA/" + imageselect
    selectedimage = Image.open(selectedimage).resize(IMAGE_SHAPE)

selectedimage = np.array(selectedimage) / 255.0

result = model.predict(selectedimage[np.newaxis, ...])

predicted_class = np.argmax(result[0], axis=-1)

labels_path = "./Product/labels.txt"
class_labels = np.array(open(labels_path).read().splitlines())

predicted_class_name = class_labels[predicted_class]

"It's a :" + predicted_class_name

【问题讨论】:

【参考方案1】:

if 条件if st.sidebar.button("Identify"): 失败,所以selectedimage 没有被声明,所以你在selectedimage = np.array(selectedimage) / 255.0 行中遇到错误

如果您的if condition 正确,请检查st.sidebar.button("Identify") 的值。它将是False

【讨论】:

【参考方案2】:

如果您的 if 子句计算结果为 False,则 selectedimage 将未定义。看起来您可能想在该 if 子句下移动整个其余逻辑,因为这完全取决于单击的按钮:

if st.sidebar.button("Identify"):
    selectedimage = "./AI_TESTING_DATA/" + imageselect
    selectedimage = Image.open(selectedimage).resize(IMAGE_SHAPE)

    selectedimage = np.array(selectedimage) / 255.0

    result = model.predict(selectedimage[np.newaxis, ...])

    predicted_class = np.argmax(result[0], axis=-1)

    labels_path = "./Product/labels.txt"
    class_labels = np.array(open(labels_path).read().splitlines())

    predicted_class_name = class_labels[predicted_class]

    "It's a :" + predicted_class_name

【讨论】:

以上是关于为啥未定义 selectedimage?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在函数体内定义的内置类型的未初始化对象具有未定义的值?

为啥 jwtService 未定义?

为啥VC++编译器提示标识符未定义?

为啥 Firebug 不为未定义的属性显示“未捕获的类型错误”?

为啥成员未定义?

为啥这个异步函数返回未定义? [复制]