我正在尝试为我的商业图像处理库的 python 绑定编写一个快速的非复制接口。我实现了根据 memoryview() 看起来不错的新型缓冲区 api 协议:
import hirsch as H
import numpy as np
w,h = 7,5
img = H.HImage.GenImageConst('byte',w,h)
m = memoryview(img)
print 'ndim shape=',m.ndim,m.shape
# -> 2 (5L, 7L)
我不明白为什么 numpy 没有捕捉到这个接口?
a = np.array(img)
print 'ndim size shape=',a.ndim,a.size,a.shape
# -> 0 1 ()
我是在做错什么,还是我应该求助于使用 numpy 数组接口,虽然它复制了数据,但它仍然有效?
请注意,我使用的是 python 2.7