Когда объявление массива Python Numpy не получает аргументов?

У меня есть камера, подключенная к моему компьютеру, которая производит 16-битные изображения в градациях серого. Я импортирую их с проприетарным программным обеспечением производителя камеры, а затем вставляю в массив.

imObj = fc2.Image()
frame = np.array(c.retrieve_buffer(imObj)) 

Это приводит к массиву как uint8. Если я попытаюсь добавить параметр dtype в объявление массива:

frame = np.array(c.retrieve_buffer(imObj), dtype = np.uint16)

Я получаю следующий вывод:

typeError: __array__() takes no arguments (1 given) 

Кто-нибудь знает, что вызывает это?

РЕДАКТИРОВАТЬ: я использую pyflycapture2. Я не знаю, как вызвать или установить атрибуты класса Image.

1 ответ

Кажется, вы используете pyflycapture2который, кажется, не имеет __array__ крючок, способный перезаписывать данные.

Вместо этого его __array__ крюк выбирает dtype соответствует изображению. То есть возвращает uint8 основанный массив, если основной формат PIXEL_FORMAT_MONO8 и uint16 основанный массив, когда формат PIXEL_FORMAT_MONO16,

Возможно, стоит проверить, что формат изображения (c.retrieve_buffer(imObj).img.format) это то что ты думаешь?

Другие вопросы по тегам