Я пытаюсь написать быстрый интерфейс без копирования для моей привязки python к коммерческой библиотеке обработки изображений. Я реализовал протокол api буфера нового стиля, который выглядит нормально в соответствии с memoryview():
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.
bf_getbuffer
иbf_releasebuffer
. Предполагается, что новый интерфейс буфера будет работать и на Python 2.x (действительно:np.array(memoryview('asd')) == np.array([ 97, 115, 100], dtype=np.uint8)
. (Обратите также внимание, что интерфейсу массива Numpy не нужно копировать данные.) - person pv.   schedule 17.08.2014