0

ある画像を別の画像にコピーしようとしていて、それを達成するために 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 で operator を使用することでこれが達成される()ことがわかりましたが、OpenCVSharp でこの演算子を見つけることができず、同等の名前が付けられるかどうかわかりません。

4

1 に答える 1

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);
于 2016-08-24T12:02:09.330 に答える