SWIG Python C++输出数组提供“未知类型”

2024-09-30 18:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用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. 我想知道是否有人能指出我在这里做的不正确的地方,因为我有点困惑。在


Tags: 文件代码importnumpysizeasnp数组
1条回答
网友
1楼 · 发布于 2024-09-30 18:13:37

看来我没有仔细研究这篇文章(SWIG+c+Python: Passing and receiving c arrays)的答案。我没有注意到swig将输出数组添加到返回列表中,只需要传入数组的大小。在

我将方法定义改为:

void grabFrame(int buf_size, unsigned char *buf);

我将python调用改为:

^{pr2}$

现在,它可以工作并返回我想要的数据数组。在

相关问题 更多 >