Скопируйте изображение в 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, и я понятия не имею, как его эквивалент может быть назван как.

1 ответ

Решение

Я понял, что это может быть достигнуто с помощью 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);
Другие вопросы по тегам