我试图使用swig包装一些c++代码,以便将numpy数组传递回python。下面是我在网上看到的一些使用numpy.I的例子,下面是我的代码。在
我将此作为类头文件中的函数定义:
bool grabFrame(int buf_size, unsigned char *buf);
在我的接口文件中,我有:
^{pr2}$我的Python代码如下所示:
import numpy as np
import OV4682Interface as ov
width = 672
height = 380
buf_size = width*height*2
buf = np.zeros(buf_size, dtype=np.uint8)
grab = ov.OV4682FrameGrabber()
grab.grabFrame(buf)
运行此程序时,我收到以下错误:
回溯(最近一次呼叫): 文件“OV4682FrameGrabberTest.py“,第44行,英寸 抓斗。抓斗(buf) File“/home/ubuntu/rgb_ir_frame_grabber/build/lib/OV4682”文件接口.py“,第117行,在grabFrame中 def grabbrame(self,*args):return\u OV4682Interface.OV4682FrameGrabber_grabbrame接口(自身,*args) TypeError:应为Int维度。'给定未知类型。在
由于某些原因,我收到一个错误,说传入数组的类型未知,但我已显式地将dtype设置为uint8. 我想知道是否有人能指出我在这里做的不正确的地方,因为我有点困惑。在
看来我没有仔细研究这篇文章(SWIG+c+Python: Passing and receiving c arrays)的答案。我没有注意到swig将输出数组添加到返回列表中,只需要传入数组的大小。在
我将方法定义改为:
我将python调用改为:
^{pr2}$现在,它可以工作并返回我想要的数据数组。在
相关问题 更多 >
编程相关推荐