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

这可能是由于:
circle –找到的圈子的输出 vector 。每个 vector 都编码为3元素浮点 vector (x,y,半径)

那么,如何检查此函数返回的是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()
为什么这甚至是错误而不是警告?

问题:如何通过圆数组或单个圆传递?我怎样才能把它们分开?

最佳答案

您也可以在PEP 8上看到,检查对象是否为None的推荐方法如下:

if circles is not None:
    if len(circles) == 3:
        # DOSOMETHING
    else:
        # DOSOMETHING

要检查circles数组是否恰好包含3个元素,只需查看其长度即可。

关于python - 检查变量是否为none,但如果只有一个对象/数组,则通过,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58380621/

10-11 10:27