将图像复制到 ROI
Copy image to ROI
我正在尝试将一张图像复制到另一张图像,我使用 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);
我正在尝试将一张图像复制到另一张图像,我使用 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);