检查变量是否为无,但如果只有一个对象/数组则让其通过

我使用 cv2 库来检测图像上的对象。此函数circles = cv2.HoughCircles(..)可以返回None或在图像上找到的圆数组。我发现的问题是检查是否找到了一个圆圈。


这可能是因为:

circles - 找到的圆的输出向量。每个向量都被编码为一个 3 元素浮点向量 (x, y, radius)


那么如何检查这个函数是返回 3 个圆还是只返回 1 个圆(并且它有 3 个值)?如果没有找到圆圈,我的检查就有效,然后我得到一个错误。


代码:


circles = cv2.HoughCircles(..)

if circles != None:

    if circles.any():

        #DOSOMETHING

在线错误if circles != None::

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


为什么这甚至是错误而不是警告?


问题:如何通过圆数组或单个圆传递?我如何在里面区分它们?


慕运维8079593
浏览 84回答 1
1回答

缥缈止盈

您还可以在PEP 8上看到,检查对象是否存在的推荐方法None如下:if circles is not None:    if len(circles) == 3:        # DOSOMETHING    else:        # DOSOMETHING要检查数组是否circles正好包含 3 个元素,您只需要查看它的长度。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python