【发布时间】:2014-06-17 09:55:30
【问题描述】:
我想在大于某个阈值的区域的每个闭合轮廓周围绘制一个边界框,而不仅仅是最大的轮廓。我该怎么做呢? 到目前为止,这是我尝试过的:
contours, _ = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
rect = cv2.boundingRect(c)
if rect[2] < 100 or rect[3] < 100: continue
print cv2.contourArea(c)
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
cv2.putText(im,'Moth Detected',(x+w+10,y+h),0,0.3,(0,255,0))
cv2.imshow("Show",im)
cv2.waitKey()
cv2.destroyAllWindows()
【问题讨论】:
-
我尝试修复您的代码格式,但如果代码的含义发生变化,请随时再次编辑,因为空格在 Python 中很重要。
-
您能否描述一下您遇到的问题?与您的预期相比,当前的行为是什么?我刚刚尝试了您的代码(后期编辑),它围绕多个轮廓绘制轮廓。
-
嗨 Aurelius,感谢您的编辑,它现在确实有效,缩进是问题所在。如果您想投票,请改写为答案,然后再投票。谢谢
-
我已经回滚了我上次的编辑,因为它从根本上改变了您的代码的性质。请参阅我的答案以获取工作版本。