C OpenCV inRange的包装?

时间:2014-03-20 09:23:41

标签: c++ c opencv wrapper

我正在为OpenCV的C ++ inRange编写一个C包装器。包装器在下面。

 void cv_inRange(InputArray* src, InputArray* lowerb, InputArray* upperb, OutputArray* dst) {
     cv::inRange(*src, *lowerb, *upperb, *dst);
 }

当我运行它时,我在ubuntu上使用g ++获得此错误 - 编译命令适用于其他所有内容

error: cannot declare pointer to ‘cv::InputArray {aka const class cv::_InputArray&}’

我知道我可以制作2个单独的包装器,如下所示,获得功能inRange应该有

 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 _InputArray& InputArray;

其中_InputArray是可以从Mat, Mat_<T>, Matx<T, m, n>, std::vector<T>, std::vector<std::vector<T> > or std::vector<Mat>构建的类。它也可以用矩阵表达式构建。“

我想将上述任何一种类型传递给inRange的C包装器,但是创建一个指向InputArray的指针不起作用。如果有人可以帮我写一个能够包含上述所有类型的C包装器,我将不胜感激。

谢谢

0 个答案:

没有答案