【发布时间】:2018-09-13 09:50:02
【问题描述】:
我正在尝试使用 python 和 opencv 找到 2 个最大的轮廓。
我尝试获取索引,然后调用 drawContour 函数,但出现了问题。
这是我的代码
im2, contours, hierarchy = cv.findContours(roi, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
largest_area = 0
second_area = 0
l_index = 0
s_index = 0
for i, c in enumerate(contours):
area = cv.contourArea(c)
if (area > largest_area):
if (area > second_area):
second_area = largest_area
largest_area = area
l_index = i
elif (area > second_area):
second_area = area
s_index = i
cv.drawContours(frame, contours[l_index], -1, (0, 255, 0), 2)
cv.imshow('frame',frame)
这是错误:
cv.drawContours(frame, contours[l_index], -1, (0, 255, 0), 2) IndexError: 列表索引超出范围
第二个问题,如果我能做到,我不知道怎么画他们两个,我该怎么做?
【问题讨论】:
-
找到这两个最大区域的逻辑没有多大意义。 |如果
area > largest_area,那么您应该second_area = largest_area并更新largest_area(当然也要同步更新相应的索引)。否则,如果area > second_area您只需更新second_area(和相应的索引)。 |调试你的代码。最简单的方法是添加一堆print语句来显示相关变量的当前状态。 -
你说得对!!我刚刚修好了!!谢谢!!!
标签: python opencv image-processing video-processing opencv3.0