C++ 是";“输入阵列”;及;垫;在opencv中也一样吗?
例如,在文档中有:C++ 是";“输入阵列”;及;垫;在opencv中也一样吗?,c++,opencv,C++,Opencv,例如,在文档中有: void cv::absdiff ( InputArray src1, InputArray src2, OutputArray dst ) 这与: void cv::absdiff ( Mat src1, Mat src2, Mat dst ) 或: ? 例如,我需要这个来创建新函数 vo
void cv::absdiff ( InputArray src1,
InputArray src2,
OutputArray dst
)
这与:
void cv::absdiff ( Mat src1,
Mat src2,
Mat dst
)
或:
?
例如,我需要这个来创建新函数
void absDiffSay(XXX src1, XXX src2, XXX dst)
{
cv::absdiff(src1,src2,dst);
cout<<"absdiff"<<endl;
}
void absDiffSay(XXX src1、XXX src2、XXX dst)
{
cv::absdiff(src1、src2、dst);
不能
这是用于将只读输入数组传递到OpenCV函数的代理类。
其定义如下:
typedef const _InputArray& InputArray;
其中,\u InputArray
是一个类,可以由Mat
、Matx
、std::vector
、std::vector
或std::vector
构造。它也可以由矩阵表达式构造
由于这主要是实现级别的类,其接口在未来版本中可能会更改,因此我们不详细描述它。但是,有一些关键的事情需要记住:
当您在参考手册或OpenCV源代码中看到采用InputArray
的函数时,这意味着您实际上可以传递Mat
、Matx
、vector
等(请参阅上面的完整列表)
可选输入参数:如果某些输入数组可能为空,请传递cv::noArray()
(或者像您以前可能做的那样简单地传递cv::Mat()
)。
该类仅用于传递参数。也就是说,通常不应声明此类的类成员、局部和全局变量。
如果您想设计自己的函数或类方法来操作多种类型的数组,可以对相应的参数使用InputArray
(或OutputArray
).\u InputArray::kind()
可用于区分Mat
和vector
等,但通常不需要
因此,如果您需要函数可以同时接受cv::Mat
和std::vector
请使用InputArray
,否则只需使用cv::Mat
当然,不要使用Mat*
是的,使用const Mat&作为输入,避免复制Mats的头。您也可以将dst作为参数作为Mat&,并返回非常详细的答案。
typedef const _InputArray& InputArray;