我已经编写了这个代码来绘制在图像中绘制的轮廓周围的矩形框,但是在运行时,除了框之外,我得到的一切都是正确的,我完全看不到 . 什么是错误?
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
EDIT: 我尝试迭代每个轮廓并为了检查它我修改了代码如下:
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输出:
对于像这样的图像:
我需要在每个类似蠕虫的生物上显示文本“蠕虫” . 但是我只得到它一次 . 有什么问题?
2 回答
我曾经使用下面的代码在检测到的轮廓上绘制矩形 . 希望能帮助到你 .
只需写:
正如 furas 所建议的那样,如果层次结构只有一个,则zip(轮廓,层次结构)将只返回一对 . 在这种情况下, contours 列表上的简单循环有效 .