无法在 OpenCV 中显示轮廓周围的边界矩形 (Python)

Unable to display bounding rectangles around contours in OpenCV (Python)

我已经编写了这段代码来围绕图像中绘制的轮廓绘制矩形框,但是在 运行 上,除了我根本看不到的框之外,我得到了所有正确的东西。错误是什么?

for cnt,heir in zip(contours, hierarchy):
    (x,y,w,h) = cv2.boundingRect(cnt);
    cv2.rectangle(im2,(x,y),(x+w,y+h),(0,255,0),2)

cv2.drawContours(im2, contours, -1, (255,255,255), 2);   
cv2.imshow("Contours",im2);

PS。我使用 OpenCV 3.1.0 和 Python 2.7

编辑: 我尝试遍历每个轮廓,为了检查它我修改了代码如下:

for cnt,heir in zip(contours, hierarchy):
    print ('Contour Area:',cv2.contourArea(cnt));
    (x,y,w,h) = cv2.boundingRect(cnt);
    print (x,y,h,w)
    cv2.putText(im2,'worm',(x+w,y+h), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2, cv2.LINE_AA);
    cv2.rectangle(im2,(x,y),(x+w,y+h),(255,0,0),2);

我打印了每个轮廓区域,每个轮廓的 (x,y,w,h) 值,并为每个轮廓放置文本 "worm",并在每个轮廓周围绘制矩形框。但是我只得到 1 个输出:

对于像这样的图像:

我需要在每个类似蠕虫的生物上显示文本 "worm"。但是我只得到一次。有什么问题?

我曾经使用下面的代码在检测到的轮廓上绘制矩形。希望对你有帮助。

for contour in contours:
    # get rectangle bounding contour
    [x,y,w,h] = cv2.boundingRect(contour)

    # draw rectangle around contour on original image
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,255),2)

简单写:

for c in contours:
    (x,y,w,h) = cv2.boundingRect(c);
    cv2.putText(im2,'worm',(x+w,y+h), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2, cv2.LINE_AA);
    cv2.rectangle(im2,(x,y),(x+w,y+h),(255,0,0),2);

cv2.drawContours(im2, contours, -1, (255,255,255), 2);   
cv2.imshow("Contours",im2);

根据 furas 的建议,zip(contours,hierarchy) 将 return 只有一对,如果 hierarchy 只有一对。在这种情况下,对 contours 列表进行简单循环即可。