C OpenCV'的包装器;什么在范围内? 我正在为OpenCV的C++范围写一个C包装器。包装在下面 void cv_inRange(InputArray* src, InputArray* lowerb, InputArray* upperb, OutputArray* dst) { cv::inRange(*src, *lowerb, *upperb, *dst); }

C OpenCV'的包装器;什么在范围内? 我正在为OpenCV的C++范围写一个C包装器。包装在下面 void cv_inRange(InputArray* src, InputArray* lowerb, InputArray* upperb, OutputArray* dst) { cv::inRange(*src, *lowerb, *upperb, *dst); },c++,c,opencv,wrapper,C++,C,Opencv,Wrapper,当我在ubuntu上运行它时,我在使用g++时遇到了这个错误——编译命令适用于所有其他命令 error: cannot declare pointer to ‘cv::InputArray {aka const class cv::_InputArray&}’ 我知道我可以制作两个单独的包装,如下所示,并获得Range应有的功能 void cv_inRange(Mat* src, Mat* lowerb, Mat* upperb, Mat* dst) { cv::inRan

当我在ubuntu上运行它时,我在使用g++时遇到了这个错误——编译命令适用于所有其他命令

error: cannot declare pointer to ‘cv::InputArray {aka const class cv::_InputArray&}’
我知道我可以制作两个单独的包装,如下所示,并获得Range应有的功能

 void cv_inRange(Mat* src, Mat* lowerb, Mat* upperb, Mat* dst) {
     cv::inRange(*src, *lowerb, *upperb, *dst);
 }
 void cv_inRangeS(Mat* src, Scalar* lowerb, Scalar* upperb, Mat* dst) {
     cv::inRange(*src, *lowerb, *upperb, *dst);
 }
但在InputArray的文档中指出:

“这是用于将只读输入数组传递到OpenCV函数的代理类。它定义为

typedef const\u InputArray&InputArray;

其中,
\u InputArray
是一个类,可以从
Mat、Mat、Matx、std::vector、std::vector或std::vector
构造。它也可以从矩阵表达式构造。”

我想将上述任何一种类型传递到inRange的C包装器中,但创建指向InputArray的指针是行不通的。如果有人能帮我写一个C包装,将能够包括上述所有类型,我将不胜感激


谢谢

只需使用Mat*而不是InputArray*。DeffED垫将在iNeReC C包装器或C++包装器内自动转换?这个问题不清楚。考虑到代码/信息,我认为你在谈论C++包装器,你应该删除C标签/术语。@ BalAK当我使用垫*代替输入数组时,尝试给它一个标量,即UpBurb和LoeLB参数的新标量(16017060)。我得到以下错误
无法将'cv::Scalar*{aka cv::Scalar_*}'转换为'cv::Mat*'
“当我使用时”-意味着什么?@berak在我完成之前意外地按了enter键..很抱歉:)