我有一个混合了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数组。
cvMat
转换为cvArr
,然后使用cvArr *
作为参数?cvMat
派生自cvArr
。因此,一旦您获得了cvArr
指针,就可以将其转换回cvMat
并使用它。或者另一个选项是返回到上一个工作版本的 OpenCV。 - askmish