cv2.findContours问题,opencv

时间:2017-04-16 10:27:41

标签: python opencv

我正在尝试从Kaggle运行一些代码,但我无法。

代码为here

错误消息是:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-2a3e36c2605f> in <module>()
     59         _, contours_mask, _ = cv2.findContours(thresh_mask.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
     60 
---> 61         main_contour = sorted(contours_mask, key = cv2.contourArea, reverse = True)[0]
     62 
     63         x,y,w,h = cv2.boundingRect(main_contour)

IndexError: list index out of range

可能是Python或包版本相关,因为其他人没有经历过代码。

我尝试打开一些输出,但我是cv2的新手。

据我所知:

cv2.findContours() -> image, contours, hierarchy

我得到了什么:

cv2.findContours(thresh_mask.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) -> (array([[0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    ..., 
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0],
    [0, 0, 0, ..., 0, 0, 0]], dtype=uint8), [], None)

因此,countours是空的,这可能是问题所在。 thresh_mask是该情况的全零矩阵,可能是原因。虽然不确定。

任何提示/建议?

1 个答案:

答案 0 :(得分:2)

这是因为你的输入图像(thresh_mask)是空的,即全黑。没有检测到轮廓。 请检查thresh_mask的内容或使用cv2.imshow显示它。