Opencv C++/Python 绑定 std::vector<myType>

问题描述 投票:0回答:1

我将在 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?)我该如何实现这一点?

python c++ opencv binding stdvector
1个回答
0
投票

我知道这个主题有点旧,但它也与我相关,我在任何地方都找不到答案,并且 @berak 提供的示例链接不是最新的。

所以这是我的解决方案,这是一种解决方法,并不像我希望的那么优雅,但无论如何。

  1. 创建一个以 std::vector 作为成员的类并创建绑定。

         class CV_EXPORTS_W_SIMPLE Wrapper
         {
         public:
         // Attributes
         CV_PROP std::vector<myType> myvector;
    
         CV_WRAP Wrapper();
         };
    
  2. 将该类(而不是 std::vector)传递给您的函数。

     CV_WRAP void myFunction(Wrapper wrapped_vector)
    

    { //东西 }

    CV_WRAP void myFunction(包装器wrapped_vector) { //东西 }

© www.soinside.com 2019 - 2024. All rights reserved.