Я предполагаю, что вы хотите вернуть маску того же размера, что и fram. Самый простой способ - скопировать маску в новое изображение того же размера, что и framIn.Вы могли бы, если ваше приложение не чувствительно ко времени, сделать маску с тем же размером framIn, установить ее ROI, а затем выполнить ваши операции.Это занимает больше времени для обработки и не является лучшей практикой.
В любом случае, мы надеемся, что здесь будет ваш код, если не получится, дайте мне знать, и я исправлю его соответственно.
if (roi != Rectangle.Empty)
{
//Create a blank image with the correct size
Image<Gray, byte> mask_return = new Image<Gray, byte>(frameIn.Size);
//Set its ROI to the same as Mask and in the centre of the image (you may wish to change this)
mask_return.ROI = new Rectangle((mask_return.Width - mask.Width) / 2, (mask_return.Height - mask.Height) / 2, mask.Width, mask.Height);
//Copy the mask to the return image
CvInvoke.cvCopy(mask, mask_return, IntPtr.Zero);
//Reset the return image ROI so it has the same dimensions
mask_return.ROI = new Rectangle(0, 0, frameIn.Width, frameIn.Height);
//Return the mask_return image instead of the mask
return mask_return;
}
return mask;
Надеюсь, это поможет,
Ура,
Крис