我试图做减法。所以这里是我在python中的命令:
import math
cen = find_centroid(im, 1)
diff = cen-320
print diff
但错误就是这样:
Traceback (most recent call last):
File "test7.py", line 26, in <module>
diff = cen-320
TypeError: unsupported operand type(s) for -: 'tuple' and 'int'
任何人都可以帮助我。
答案 0 :(得分:0)
错误消息告诉您需要知道的所有内容:
find_centroids
的结果是tuple
- 在Python中写成(a,b,)
您无法从元组中减去数字。但你可以做到
diff = [x - 320 for x in cen]
这称为“列表理解”。它会为x - 320
中找到的x
的每个值评估cen
,并将这些值作为列表返回diff
示例:
>>> cen = (456,234,)
>>> diff = [x - 320 for x in cen]
>>> diff
[136, -86]
答案 1 :(得分:0)
根据错误消息,find_centroid
返回一个元组。
相应地改变减法表达式:
cen[0] - 320
或者更改函数以返回数字而不是元组。
答案 2 :(得分:0)
问题正是它所说的。您试图从元组中减去一个整数。从查看代码,cen必须是元组,因为320是一个整数。这意味着find_centriod返回一个元组。这是有道理的,因为质心将包含x和y坐标。
如果您只想要x坐标,可以使用cen [0]。如果您只想要y坐标,则可以使用cen [1]。