【发布时间】:2014-07-30 09:33:32
【问题描述】:
我正在使用 opencv 图像处理库。我只想用另一个小图像替换原始 Mat 图像的矩形区域(小于原始图像)。我找不到这样做的方向
谁能帮帮我。提前致谢
【问题讨论】:
标签: java opencv image-processing
我正在使用 opencv 图像处理库。我只想用另一个小图像替换原始 Mat 图像的矩形区域(小于原始图像)。我找不到这样做的方向
谁能帮帮我。提前致谢
【问题讨论】:
标签: java opencv image-processing
这是一种方法,而不是声称它是最好的方法。
Mat m = ... // your smaller mat
Mat submat= matOrig.submat(new Rect(x,y, m.cols(), m.rows()) );
m.copyTo(submat);
假设 m 没有超出 matOrig 的范围,这应该可以工作。当你得到一个 submat 时,它仍然链接到它的源 Mat。
【讨论】:
public void ChangeImage(Mat src, Mat small, Rect roi){ Mat subView =src.submat(roi); small.copyTo(subView); Highgui.imwrite("combined-image.png", src); }
这是我的代码:
Mat m = new Mat(originalImg,new Rect(x,y,w, h));
double[] size = {w, h};
Imgproc.resize(logo,logo,new Size(size));// make sure your logo is the same size with your roi
Imgproc.cvtColor(logo, logo, Imgproc.COLOR_RGBA2RGB);//make sure your logo has the same channel with your dst img
congrats.copyTo(m);
【讨论】: