0

I'm getting the following error:

Traceback (most recent call last):
  File "calibrating.py", line 160, in <module>
    intrinsic = calibrate2(corners, cb_points, (640,480))
  File "calibrating.py", line 100, in calibrate2
    valid_corners = filter(itemgetter(0), image_corners)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

image_corners is a list of numpy arrays, i.e.,

[array([[ 261.45239258,  140.88212585],
   [ 301.11242676,  156.306427  ],
   [ 343.38937378,  168.20132446],
   [ 382.79559326,  180.48405457],...
   [ 392.16989136,  338.6171875 ],
   [ 439.97772217,  337.2124939 ]], dtype=float32), ... ]

What I want to do is to take the matrices without the dtype=float32, what am I doing wrong?

XavierusWolf
  • 129
  • 1
  • 2
  • 9

2 Answers2

1

The dtype attribute isn't accessible by itemgetter.

Try this filter instead:

filter(lambda arr: arr.dtype != float32, image_corners)

That will give you all the matricies without dtype==float32.

Raymond Hettinger
  • 216,523
  • 63
  • 388
  • 485
0

Or with list comprehensions:

[a for a in image_corners if a.dtype is not float32]
Jakub M.
  • 32,471
  • 48
  • 110
  • 179