我正在使用opencv图像处理库。我只想用另一个小图像替换原始Mat图像的矩形区域(小于原始图像)。我找不到这样做的方向
是的,请有人帮助我。提前致谢答案 0 :(得分:5)
这是一种方式,而不是声称它是最好的方式。
Mat m = ... // your smaller mat
Mat submat= matOrig.submat(new Rect(x,y, m.cols(), m.rows()) );
m.copyTo(submat);
这应该可以正常工作,假设m不会超出matOrig的界限。当你得到一个submat时,它仍然链接到它的源Mat。
答案 1 :(得分:-1)
这是我的代码:
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);