Teste se uma matriz numpy é membro de uma lista de matrizes numpy e remova-a da lista
Quando testar se um array numpyc
é membro de uma lista de matrizes numpyCNTS
:
import numpy as np
c = np.array([[[ 75, 763]],
[[ 57, 763]],
[[ 57, 749]],
[[ 75, 749]]])
CNTS = [np.array([[[ 78, 1202]],
[[ 63, 1202]],
[[ 63, 1187]],
[[ 78, 1187]]]),
np.array([[[ 75, 763]],
[[ 57, 763]],
[[ 57, 749]],
[[ 75, 749]]]),
np.array([[[ 72, 742]],
[[ 58, 742]],
[[ 57, 741]],
[[ 57, 727]],
[[ 58, 726]],
[[ 72, 726]]]),
np.array([[[ 66, 194]],
[[ 51, 194]],
[[ 51, 179]],
[[ 66, 179]]])]
print(c in CNTS)
Eu recebo
ValueError: O valor de verdade de uma matriz com mais de um elemento é ambíguo. Use a.any () ou a.all ()
No entanto, a resposta é bastante clara:c
é exatamenteCNTS[1]
, entãoc in CNTS
deve retornar True!
Como testar corretamente se uma matriz numpy é membro de uma lista de matrizes nump
O mesmo problema acontecequando remover:
CNTS.remove(c)
ValueError: O valor de verdade de uma matriz com mais de um elemento é ambíguo. Use a.any () ou a.all ()
Aplicação: teste se umopencv
contorno (matriz numpy) é membro de uma lista de contornos, veja, por exemplo,Remova um contorno aberto de uma lista de contornos.