将图像复制到ROI
本文关键字:ROI 复制 图像 | 更新日期: 2023-09-27 18:03:42
我试图将一个图像复制到另一个图像,我使用CopyTo来实现它,除了源图像被放在目标的ROI中,我的目标图像被完全替换。
下面是我的代码:var output = new Mat(size, size, MatType.CV_8UC3, background);
var temp1 = image.Resize(new OpenCvSharp.Size(targetWidth, targetHeight), 0, 0, interpolation);
xOffset = Convert.ToInt32((size - targetWidth) / 2);
yOffset = Convert.ToInt32((size - targetHeight) / 2);
output.AdjustROI(yOffset, (size - 1) - yOffset, xOffset, (size - 1) - xOffset);
temp1.CopyTo(output);
output.AdjustROI(0, size - 1, 0, size - 1);
我发现在OpenCV中,这现在是通过使用具有ROI的()
运算符来实现的,但是我在OpenCVSharp中找不到这个运算符,我不知道它的等效可能被命名为
我意识到这可能是实现使用Mat
的构造函数在OpenCVSharp和以下代码似乎做的技巧:
var output = new Mat(size, size, MatType.CV_8UC3, background);
var temp1 = image.Resize(new OpenCvSharp.Size(targetWidth, targetHeight), 0, 0, interpolation);
xOffset = Convert.ToInt32((size - targetWidth) / 2);
yOffset = Convert.ToInt32((size - targetHeight) / 2);
var roi = new Mat(output, new Rect(xOffset, yOffset, targetWidth, targetHeight));
temp1.CopyTo(roi);