gpt4 book ai didi

python - 使用图片时出现ValueError == None

转载 作者:行者123 更新时间:2023-12-02 16:46:34 27 4
gpt4 key购买 nike

我正在为程序创建故障保护,因此无论何时没有图像或image = None,它都会显示一条消息并终止程序。
我正在使用以下代码作为执行此操作的方法:

src_img = cv2.imread('/home/nazar/Downloads/img_4.png', 1)
if src_img == None:
exit('No such file or direcory!')
copy = src_img.copy()

如果没有图像,这会起作用,但是当有图像时,会出现错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我尝试遵循错误的建议并尝试了 if src_img.all == None:,现在当没有图像时它给出了错误:
AttributeError: 'NoneType' object has no attribute 'all'

有没有一种方法可以实际执行此操作而不会收到这些错误消息,并且如果给出了图像或没有给出图像,则可以正常工作。

最佳答案

您将获得第一个ValueError,因为NoneType没有定义与numpy数组的相等比较,因此使用了数组的比较方法。 Numpy将None转换为对象数组,并将其广播为图像的大小。 ==的结果是按元素进行比较,即与图像大小相同的 bool(boolean) 数组。

除了这些,您应该做

if src_img is None:
is比较原始引用。建议您检查“无”,因为它更快并且“无”是一个单例。

第二个 AttributeError来自以下事实:当 src_img为None时,它没有名为 all的方法。即使是适当的数组, src_img.all只是对该方法的引用,而不是调用它的结果。

奇怪的是,您本可以完全放弃 if np.all(src_img == None):,但您实际上不应该这样做,因为在这种情况下,这完全是一种怪癖。当 src_img为None时,比较为标量True,因此 np.all将返回True。如果 src_img是数字数组,则每个元素将比较False,而 np.all将返回False。这个世界唯一一次给出错误结果的情况是,如果您有一个 src_img,它是一个对象数组,其所有元素均为None。

关于python - 使用图片时出现ValueError == None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51924219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com