2013-08-27 22 views
6

我试图创建一个具有与另一个大小和类型相同的Mat。新Mat的所有元素应该是零,所以我尝试了Mat::zeros(size, type)函数,定义为:无法通过大小和类型参数调用OpenCV的Mat ::零

static MatExpr zeros(Size size, int type); 

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

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

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

没有匹配的功能调用“零”

什么我做错了吗?

+0

什么是'g.size'的类型? – juanchopanza

回答

11

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

都需要这样的呼吁:

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

谢谢。我应该知道的任何其他怪癖? ;-) – cfischer