当 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 的内容。