多变量声明

时间:2015-04-16 13:46:45

标签: python opencv variable-declaration

我在Python中看到了这个声明,但我不明白这意味着什么并且无法找到解释:

ret, thresh = cv2.threshold(imgray, 127, 255, 0)

问题是:为什么retthresh之间有逗号?这是什么类型的任务?

3 个答案:

答案 0 :(得分:2)

这是“元组”“解构”分配 - 请参阅例如Multiple assignment semanticscv2.threshold返回包含两个值的元组,因此它等同于:

temp = cv2.threshold(...)
ret = temp[0]
thresh = temp[1]

请参阅语言参考中的Assignment Statements

  

如果目标列表是以逗号分隔的目标列表:对象必须是与目标列表中的目标具有相同数量的项目的可迭代对象,并且项目从左到右分配到相应的目标。

答案 1 :(得分:0)

这是一个值解包语法 cv2.threshold(imgray,127,255,0)返回一个两元素元组 使用此语法,您可以将此元组的元素分配给变量retthresh

答案 2 :(得分:0)

您可以使用此语法将元组解包为单个变量,例如: G:

a, b = (0, 1)
# a == 0
# b == 1

您的代码与:

相同
result = cv2.threshold(...)
ret = result[0]
thresh = result[1]