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

static MatExpr zeros(Size size, int type);

这是我的代码。假设我已经有一个 Mat g (通过 imread 创建):
Mat h = Mat::zeros(g.size, g.type());

这会给我一个编译器错误,提示:

没有用于调用“零”的匹配函数

我究竟做错了什么?

最佳答案

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

你需要这样调用:

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

关于c++ - 无法使用大小和类型参数调用 OpenCV 的 Mat::zeros,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18470166/

10-15 07:51