我正在为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包装器,我将不胜感激。
谢谢