当 max() 为空时附加一个空值
Appending a null value when max() is empty
下面的代码根据其最大面积找到一个轮廓,但是当找不到轮廓时,我想将 0
附加到列表中以解决 ValueError: max() arg is an empty sequence
错误但是它失败。这是为什么?
contours = cv2.findContours(binaryimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) == 2:
contours = contours[0]
else:
contours = contours[1]
maxcontour = max(contours, key=cv2.contourArea) #filter maximum contour based on contour area
if len(maxcontour) == 0:
areavalue.append(0)
maxarea = cv2.contourArea(maxcontour)
areavalue.append(maxarea)
编辑:添加 default = 0
后,我收到 maxarea
的错误
maxcontour = max(contours, key=cv2.contourArea, default = 0) #filter maximum contour based on contour area
maxarea = cv2.contourArea(maxcontour)
areavalue.append(maxarea)
从Python3.8开始(可能更早),你可以写
max(contours, key=cv2.contourArea, default=0)
其中 default
表示列表为空时 return 的内容。
下面的代码根据其最大面积找到一个轮廓,但是当找不到轮廓时,我想将 0
附加到列表中以解决 ValueError: max() arg is an empty sequence
错误但是它失败。这是为什么?
contours = cv2.findContours(binaryimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) == 2:
contours = contours[0]
else:
contours = contours[1]
maxcontour = max(contours, key=cv2.contourArea) #filter maximum contour based on contour area
if len(maxcontour) == 0:
areavalue.append(0)
maxarea = cv2.contourArea(maxcontour)
areavalue.append(maxarea)
编辑:添加 default = 0
后,我收到 maxarea
maxcontour = max(contours, key=cv2.contourArea, default = 0) #filter maximum contour based on contour area
maxarea = cv2.contourArea(maxcontour)
areavalue.append(maxarea)
从Python3.8开始(可能更早),你可以写
max(contours, key=cv2.contourArea, default=0)
其中 default
表示列表为空时 return 的内容。