您是否考虑过使用 XNA 来调整图像大小?在这里你可以了解 https://stackoverflow.com/a/12495843/1260006如何使用 XNA 将图像以 png/jpeg 格式保存到 MemoryStream,然后将其重用为 Bitmap 对象:
编辑:我将在这里发布一个示例(取自上面的链接),说明如何使用 XNA。
public static Image Texture2Image(Texture2D texture)
{
Image img;
using (MemoryStream MS = new MemoryStream())
{
texture.SaveAsPng(MS, texture.Width, texture.Height);
//Go To the beginning of the stream.
MS.Seek(0, SeekOrigin.Begin);
//Create the image based on the stream.
img = Bitmap.FromStream(MS);
}
return img;
}
今天我还发现 OpenCV 可以使用 GPU/多核 CPU。例如,您可以选择使用 .NET 包装器,例如Emgu http://www.emgu.com/wiki/index.php/Main_Page并使用其 Image 类来操作图片并返回 .NET Bitmap 类:
public static Bitmap ResizeBitmap(Bitmap sourceBM, int width, int height)
{
// Initialize Emgu Image object
Image<Bgr, Byte> img = new Image<Bgr, Byte>(sourceBM);
// Resize using liniear interpolation
img.Resize(width, height, INTER.CV_INTER_LINEAR);
// Return .NET Bitmap object
return img.ToBitmap();
}