openCVを使った機械学習や画像処理をしていると 'tuple' object has no attribute 'pop' というエラーが度々生じる。
タプルは辞書型で、変数ではないことから編集や修正はできませんよというエラーです。
openCVを使って輪郭線(コンター)の処理を使用しようとすると cv2.findContours の出力値がこのタプルで返される。それを編集しようとしてエラーが生じるわけです。
でも、 max_area = contours.pop(k) のような処理をしたい場合があります。このような場合には、タプルからリストへと変換して処理を続行するということで回避できます。
例えば、
conts = list(contours)
と一時的にリスト変換して、このリストに対して、
max_area = conts.pop(max_area_idx)
とすれば良いわけです。
タプルは辞書型で、変数ではないことから編集や修正はできませんよというエラーです。
openCVを使って輪郭線(コンター)の処理を使用しようとすると cv2.findContours の出力値がこのタプルで返される。それを編集しようとしてエラーが生じるわけです。
でも、 max_area = contours.pop(k) のような処理をしたい場合があります。このような場合には、タプルからリストへと変換して処理を続行するということで回避できます。
例えば、
conts = list(contours)
と一時的にリスト変換して、このリストに対して、
max_area = conts.pop(max_area_idx)
とすれば良いわけです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます