我正在使用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