我正在使用carrays.i中定义的SWIG array_class
宏来创建一个可以发送到我的项目的C++端的unsigned char缓冲区,该缓冲区处理拍照。这工作正常 - 缓冲区是在相机触发后填充宽度数据,我可以使用python中的[]来解引用缓冲区,以查看它保存的内容。我现在想从该缓冲区创建PIL图像,使用Image.frombuffer
:将SWIG代理对象作为输入传递给PIL.Image.frombuffer
Image.frombuffer(mode, size, data) => image
(新中PIL 1.1.4)。使用标准的“原始”解码器,从字符串或缓冲区对象中的像素数据创建图像内存。
,但我得到一个错误信息,告诉我,我提供痛饮对象不是蟒蛇缓冲:
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1853, in frombuffer
core.map_buffer(data, size, decoder_name, None, 0, args)
TypeError: expected string or buffer
我怎样才能用缓冲的类型兼容痛饮对象的这种代理是Image.frombuffer
预期?
我不确定它是否应该使用缓冲区(可能它应该)。我只是想指出,我喜欢通过NumPy数组桥接所有图像数据。国际海事组织(IMO)更容易直接从C++操纵NumPy Python对象,而不是试图让SWIG生成正确的代码。我有一些[示例代码](https://github.com/martinxyz/python/blob/master/realistic/hello.hpp)在线。你可以让SWIG包装一个返回PyObject *的方法,并返回一个由PyArray_SimpleNew()创建的新的NumPy对象。 – maxy 2012-01-11 20:29:24
你是否知道某处的车道长度? – Flexo 2012-01-13 00:15:53