我在Python中看到了这个声明,但我不明白这意味着什么并且无法找到解释:
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
问题是:为什么ret
和thresh
之间有逗号?这是什么类型的任务?
答案 0 :(得分:2)
这是“元组”或“解构”分配 - 请参阅例如Multiple assignment semantics。 cv2.threshold
返回包含两个值的元组,因此它等同于:
temp = cv2.threshold(...)
ret = temp[0]
thresh = temp[1]
请参阅语言参考中的Assignment Statements:
如果目标列表是以逗号分隔的目标列表:对象必须是与目标列表中的目标具有相同数量的项目的可迭代对象,并且项目从左到右分配到相应的目标。
答案 1 :(得分:0)
这是一个值解包语法
cv2.threshold(imgray,127,255,0)
返回一个两元素元组
使用此语法,您可以将此元组的元素分配给变量ret
和thresh
。
答案 2 :(得分:0)
您可以使用此语法将元组解包为单个变量,例如: G:
a, b = (0, 1)
# a == 0
# b == 1
您的代码与:
相同result = cv2.threshold(...)
ret = result[0]
thresh = result[1]