1

我有一台连接到我的计算机的相机,它可以生成 16 位灰度图像。我正在使用相机制造商的专有软件导入它们,然后将它们插入到一个 numpy 数组中。

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 类属性。

4

1 回答 1

3

看来您可能正在使用pyflycapture2,它似乎没有__array__能够重铸数据的钩子。

相反,它的__array__钩子选择dtype适合图像的。也就是说,uint8如果基础格式是,它返回一个基于数组,如果格式是PIXEL_FORMAT_MONO8,它返回一个基于uint16数组PIXEL_FORMAT_MONO16

可能值得检查一下图像格式 ( c.retrieve_buffer(imObj).img.format) 是否符合您的想法?

于 2016-03-15T20:59:07.527 回答