我应用返回浮动的移动平均逻辑。我先将该 float 转换为 int,然后再使用它在 OpenCV 中绘制线条,但出现以下错误
ValueError: cannot convert float NaN to integer
示例代码
def movingAverage(avg, new_sample, N=20):
if (avg == 0):
return new_sample
avg -= avg / N;
avg += new_sample / N;
return avg;
x1 = int(avgx1) #avgx1 is returned from the movingaverage function
y1 = int(avgy1)
x2 = int(avgx2)
y2 = int(avgy2)
cv2.line(img, (x1, y1), (x2, y2), [255,255,255], 12)
关于如何解决它有什么建议吗?
根据您发布的内容,您的movingAverage()
函数正在返回NaN
在某一点。
NaN
是一个特殊的浮点哨兵值,意思是“不是数字”。一般来说,Python 更喜欢引发异常而不是返回NaN
,所以像sqrt(-1)
and log(0.0)
通常会提高而不是返回NaN
。但是,您可以从其他库取回该值。一个很好的例子可能是尝试从电子表格中的字符串单元格中提取数值。
标准Python提供math.isnan(x)
你可以用它来测试NaN
。你可以assert
反对它,在发现时引发异常,或者您可以提供重置价值为了NaN
.
您似乎正在绘制图表或图表。我的建议是专门尝试找出这个问题(为什么你会遇到这个特殊的问题)NaN
),然后编写一些代码来提供替换。
例如,您可能确定电子表格中的列标题负责这个特定的的实例NaN
,并修复代码以跳过列标题。但是,为了防止以后再次发生,您可以检查isnan()
in the movingAverage()
函数,并将任何值替换为 0 或最大值,有效地处理NaN
0 或无穷大,无论哪个对您的图表更有意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)