私は最大のn個の等高線を取り除き、他のものを削除しようとしています。 しかし、いくつかのフレームでこの例外が発生しており、他のフレームではこの例外が発生しません!リストから複数の要素を持つ配列の真理値はあいまいです。 a.any()またはa.all()を使用インデックスからリストから削除するとき
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()
を輪郭を削除しようとしたとき 例外が発生し、これは私のコードです:
コール:
contours, hierarchy = cv2.findContours(img_dilated_chest, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours = get_biggest_n_contours(contours, 3)
機能:
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
前のページを確認しました答えはありますが、どこでa.anyやa.allを使うべきか分かりませんし、なぜ私はそれらを私のケースで使うべきかわかりません! インデックスを使用して削除するので、あいまいさを引き起こす比較は表示されません。
はありがとう
実際には、輪郭線の数がn以上でループが機能しているかどうかを知りたいだけです。さもなければ、すべての輪郭を取ります。 –
私はそれぞれの輪郭内の値ではなく輪郭自体を気にしています。 –
警告を生成する正確なトレースバックを示してください。ブール値のコンテキストで配列をどこで使用しているのかは分かりません。 – chepner