1

opencv 2.4 中是否有任何解决方案返回对子垫的非常量引用?
我问这个是因为我想覆盖一个由 roi 定义的子图像,但mat(roi)返回一个 const 引用,所以我不能写 saymat(roi)=mat2cv::rectangle(mat(roi), rect_relative_to_roi).

编辑:(我会更具体地使用安德烈的回答)

如果我已经定义了在子图像上工作的复杂绘图函数,
那么我可以避免向绘图函数发送相对坐标的唯一方法是
来回复制我想要使用的子图像吗?

我的意思是这样的:

/* Mat canvas; */
Mat subimg = canvas(roi);
draw_sth(subimg);
subimg.copyTo(canvas(roi));
4

2 回答 2

5

你可以做

mat2.copyTo(mat(roi));
于 2012-10-28T12:09:52.087 回答
2

好吧,事实证明

Mat subcanvas = canvas(roi);
draw_sth(subcanvas);

是答案,它将修改原始画布,因为 Mat 将被视为引用计数的智能指针,它们只是指向图像数据。

另一方面,copyTo() 不好。看一下opencv代码:

//! copies the matrix content to "m".
// It calls m.create(this->size(), this->type()).
于 2012-10-29T16:23:46.337 回答