【发布时间】:2011-03-17 08:48:15
【问题描述】:
我有一个混合了 Python 和 C 的 OpenCV 项目。更改为 OpenCV 2.1 后,我对 C 代码的调用不再有效,可能是因为 OpenCV 不再使用 SWIG 绑定。
在 Python 中,我习惯用以下原型调用 C 函数:
int fast_support_transform(CvMat * I, CvMat * N,...);
现在,我收到以下错误:
TypeError: in method 'fast_support_transform', argument 1 of type 'CvMat *'
C 代码来自我创建的一个库,该库使用 SWIG 生成 Python 接口。我不确定,但我认为 OpenCV 现在正在使用 ctypes,并且此代码无法将 CvMat 指针发送到我的本机代码。
您知道如何快速解决此问题吗?欢迎任何提示。
更新:访问者,请注意这个问题过时。 OpenCV 中的 Python 支持现在非常成熟。 CvMat 现在默认表示为 Numpy 数组。
【问题讨论】:
-
尝试将
cvMats 转换为cvArrs,然后使用 cvArr * 作为参数? cvMat 源自 cvArr。所以,一旦你得到 cvArr 指针,你可以十次将它转换回 cvMat 并使用它。或者另一种选择是回到 OpenCV 的最后一个工作版本。
标签: python c opencv swig ctypes