无法使用大小和类型参数调用OpenCV的Mat :: zeros

时间:2013-08-27 15:48:51

标签: c++ opencv compiler-errors overloading

我正在尝试创建一个Mat,其大小和类型与另一个相同。新Mat的所有元素都应为零,因此我尝试了Mat::zeros(size, type)函数,定义为:

static MatExpr zeros(Size size, int type);

这是我的代码。假设我已经有Mat g(通过imread创建):

Mat h = Mat::zeros(g.size, g.type());

这会给我一个编译器错误,抱怨:

没有用于调用'zeros'的匹配函数

我做错了什么?

1 个答案:

答案 0 :(得分:14)

你偶然发现了cv::Mat的一个怪癖。 size字段不返回cv::Size,而是返回Mat::MSize结构。可以通过调用MSize将此cv::Size转换为operator()

你需要像这样打电话:

Mat h = Mat::zeros(g.size(), g.type());