OPENCV 3:如何将CV :: MAT作为可选参数传递
OpenCV 3: How to pass cv::Mat as an optional argument
我想在C 中编写一个函数,该函数将矩阵作为可选参数。如果用户在调用函数时最终传递了矩阵,则将通过函数修改,因此我正在通过参考实现通行证。
根据以前问题的接受答案,可以通过使默认值为空垫子来完成,例如:
void foo(..., cv::Mat &matrix = cv::Mat()) {
// code
return;
}
但是,当我尝试在OpenCV 3.2中进行编译时,我从类型的'cv :: mat&'从类型的'cv :: mat'»mat'»error。/p>
自OpenCV 2.4以来,此功能是否更改了,或者问题可能在其他地方?
我可能错了,因为我是这些问题的初学者,但这就是我的想法。您想通过参考文献进行一个可选的论点。问题是带有符号&的参考。是对l值的引用,该对象是存在的对象。C 不允许您编写的内容,因为matrix
是R值,这是一个临时对象,与与之关联的实际存储地址没有实际的内存地址。您可以通过cv::Mat &matrix = cv::Mat()
的唯一方法是构造它,const cv::Mat &matrix = cv::Mat()
当然不是您需要的。
最简单的解决方案恕我直言只是超载您的函数定义,以便您拥有
void foo(...args);
void foo(...args, cv::Mat &matrix);
希望它有帮助
这是因为C 不允许您使用rvalue初始化非const参考。
所以您可以:
1(使参考const-不适合您,因为您想更改函数中的矩阵
中的矩阵内容或
2(在您的模块中全球存储一个cv::Mat
INIT变量:
static const cv::Mat g_mat = cv::Mat();
void foo(..., cv::Mat &matrix = g_mat) {
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用指向成员的指针将成员函数作为参数传递
- 如何将参数传递给正在使用模板的类
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将部分流作为参数传递
- 我正在开发服务器,ip作为参数传递不起作用
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 将参数传递为"const"的奇怪效果
- 如何在 c++ 中将函数作为参数传递?
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 使用引用与指针将数组作为参数传递
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 将参数打包的参数传递到 std::queue 中,以便稍后使用不同的函数调用
- 为什么我不能将引用作为 std::async 的函数参数传递
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- OPENCV 3:如何将CV :: MAT作为可选参数传递