opencv 2.4中是否有任何解决方案将非const引用返回到子Mat?
我问这个是因为我想覆盖一个由roi定义的子图像,
但是mat(roi)
返回一个const引用,所以我不能写出mat(roi)=mat2
,
或cv::rectangle(mat(roi), rect_relative_to_roi)
。
编辑:(我会更具体地使用Andrej的回答)
如果我定义了适用于子图像的复杂绘图函数,则
是我可以避免向绘图函数发送相对坐标的唯一方法,
我来回复制我想要使用的子图像?
我是这样的意思:
/* Mat canvas; */
Mat subimg = canvas(roi);
draw_sth(subimg);
subimg.copyTo(canvas(roi));
答案 0 :(得分:5)
你可以做到
mat2.copyTo(mat(roi));
答案 1 :(得分: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()).