我使用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/