我正在尝试创建一个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'的匹配函数
我做错了什么?
答案 0 :(得分:14)
你偶然发现了cv::Mat
的一个怪癖。 size
字段不返回cv::Size
,而是返回Mat::MSize
结构。可以通过调用MSize
将此cv::Size
转换为operator()
。
你需要像这样打电话:
Mat h = Mat::zeros(g.size(), g.type());