我将在 this 之后添加 OpenCV 模块。
我已经创建了类和函数,这可以正常工作:)
但是,当我想创建一个以
std::vector<myType>
作为参数的函数时,其中 myType
是使用 opencv 的绑定指令声明的:
struct CV_EXPORTS_W_SIMPLE myType { //Also tried with CV_EXPORTS_W
// Stuff
};
我的函数看起来像这样(它是一个类方法):
CV_WRAP void myFunction(std::vector<mytype>){
//stuff
}
当我编译时,我收到一个很长的错误,开头为:
/source/build/pyopencv_generated_types.h:278:5: error: ‘vector_mytype’ was not declared in this scope
vector_mytype vmytype0;
这让我觉得我必须在某处手动声明我的类的向量绑定(cv2.cpp?)我该如何实现这一点?
我知道这个主题有点旧,但它也与我相关,我在任何地方都找不到答案,并且 @berak 提供的示例链接不是最新的。
所以这是我的解决方案,这是一种解决方法,并不像我希望的那么优雅,但无论如何。
创建一个以 std::vector 作为成员的类并创建绑定。
class CV_EXPORTS_W_SIMPLE Wrapper
{
public:
// Attributes
CV_PROP std::vector<myType> myvector;
CV_WRAP Wrapper();
};
将该类(而不是 std::vector)传递给您的函数。
CV_WRAP void myFunction(Wrapper wrapped_vector)
{ //东西 }
CV_WRAP void myFunction(包装器wrapped_vector) { //东西 }