将图像复制到ROI

时间:2016-08-24 11:55:54

标签: c# opencvsharp

我正在尝试将一个图像复制到另一个图像,我使用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中找到此运算符,而且我也不知道它的等效名称是什么。

1 个答案:

答案 0 :(得分:0)

我意识到这可能是在OpenCVSharp中使用Mat的构造函数实现的,以下代码似乎可以解决这个问题:

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);