<p>我试着取最大的n个轮廓,去掉其他的。
但我在某些帧中得到了这个异常,而在其他帧中却没有!
尝试从列表中删除轮廓时发生异常</p>
<pre><code>Traceback (most recent call last):
File "/Users/TheMaestro/Desktop/Max Planck/FishTracking/FishTracker/general_tests.py", line 93, in <module>
contours_chest = ImageProcessor.get_bigest_n_contours(contours_chest, 3)
File "/Users/TheMaestro/Desktop/Max Planck/Fish Tracking/FishTracker/Controllers/ImageProcessor.py", line 319, in get_bigest_n_contours
contours.remove(contours[i])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
</code></pre>
<p>这是我的代码:</p>
<p>电话:</p>
^{pr2}$
<p>功能:</p>
<pre><code>def get_biggest_n_contours(contours, n):
contours = sorted(contours, key=get_area, reverse=True)
contours_count = len(contours)
if contours_count > n:
for i in range(n,contours_count):
contours.remove(contours[i])
i -= 1
return contours
</code></pre>
<p><a href="https://i.stack.imgur.com/aDYym.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aDYym.png" alt="Data information"/></a>
我检查了前面的答案,但我不知道在哪里使用a.any或a.all,也不知道为什么要在我的案例中使用它们!
我删除了使用索引,所以我看不到一个导致歧义的比较!在</p>
<p>谢谢你</p>
<p>通常不应在迭代列表时将其从列表中移除,但这是不对的:</p>
<pre><code>for i in range(n,contours_count):
contours.remove(contours[i])
i -= 1
</code></pre>
<p>{{{cd2>中的下一个迭代{elmnt}将不具有实数效果。既然您想要第一个<code>n</code>轮廓,只需执行以下操作:</p>
^{pr2}$