【问题标题】:Either i get Invalid syntax or expected string or Unicode, float found我得到无效的语法或预期的字符串或 Unicode,找到浮点数
【发布时间】:2017-05-05 19:01:51
【问题描述】:

起初,我得到一个预期的 str 或 unicode 对象,在尝试将我的速度结果放入 cv2.putText 函数时发现浮动。经过一番混乱后,我设法将速度读数转换为字符串。

现在,只要我将速度输入cv2.putText,下面的代码行就会有一个syntaxError: invalid Syntax,如果我删除了下一个,依此类推。一旦 cv2.putText 函数被删除,它就会再次工作。

if Ydistance >5:
     velocity = (Ydistance / time) 
     velocity = string(velocity)
     #print(type(velocity))
     cv2.putText(frame, "".format(velocity), (10,500), font, 4,
         (255,255,255), cv2.LINE_AA)

     elif Ydistance ==0.0:
         continue 

string(velocity) 是一个将其转换为字符串的类,当使用 velocity = str(velocity)velocity = unicode(velocity) 时,速度保持浮动

提前感谢

【问题讨论】:

  • cv2.putText... 行被缩进,退出if/elif/else 块。将其移到if 下。
  • 抱歉,是我粗心,在发布问题之前没有仔细检查,在代码中它是正确对齐的
  • 您还有问题吗?您可以发布堆栈跟踪吗?在更新的问题中,elif 之前有一个空格会导致另一个缩进问题,continue 之后有一个冒号会导致语法错误。
  • 那是我没有再次检查它对不起。我删除了冒号,这没有任何区别。目前,putText 已退出循环,并导致以下代码的语法无效。至于 StackTrace,我早先尝试过(python 中的新手),在我为该任务多次尝试失败后
  • 我不是想让你发疯,但是....现在elif 缩进太远了。

标签: python string opencv syntax


【解决方案1】:

如果我清理间距(elif 的缩进并始终使用 4 个空格 - 您似乎有 5 个)并将代码放入循环中,我不会收到语法错误。代码当然不会运行,但语法很好。现在我有一个语法正确的程序的运行演示,每个人都可以测试。

while True:
    if Ydistance >5:
        velocity = (Ydistance / time) 
        velocity = string(velocity)
        #print(type(velocity))
        cv2.putText(frame, "".format(velocity), (10,500), font, 4,
            (255,255,255), cv2.LINE_AA)

    elif Ydistance ==0.0:
        continue 

运行它我得到了

Traceback (most recent call last):
  File "o.py", line 2, in <module>
    if Ydistance >5:
NameError: name 'Ydistance' is not defined

这很好,因为我不再有语法问题。

【讨论】:

  • 我遇到了同样的错误,但我的 Ydistance 被正确定义为:'Ydistance = ((dY / px_mm))'
猜你喜欢
  • 2021-04-04
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 2019-08-28
  • 2020-09-09
  • 1970-01-01
相关资源
最近更新 更多