3

在寻找可用于我计划创建的新应用程序的良好图像处理库。我将使用 C#.NET (VS 2008)

我的应用程序需要执行以下操作:

  1. 启动时加载图像并显示在图片框中
  2. 然后我应该能够在图片框中的任何位置选择四个点(TopLeft、TopRight、BottomLeft、BottomRight)。
  3. 然后我需要使用 4 个源点和目标点将源图像转换为正确的透视图。

不仅如此,我还需要最终输出图像具有指定的大小。我希望应用程序能够使用相同的透视图并返回我指定的指定矩形大小(不是 4 点大小)的图像。我希望你明白我的意思。需要对源图像进行平铺和转换,以生成完全适合指定区域的输出。

我尝试了一些库,如 Aforge.NET、ImageMagick、EMGU 等。有些很慢。有些只能产生小尺寸的透视图像。有些给出内存错误。找不到合适的解决方案。

4

2 回答 2

3

我认为我的问题的答案在这里也可以帮助你的情况。

于 2011-04-20T12:42:58.683 回答
1

您可能想看看这个,因为它可以解决您的部分问题,或者引导您朝着正确的方向前进:http: //www.codeproject.com/KB/graphics/YLScsFreeTransform.aspx

它将使用您提供的 4 个 X/Y 坐标拍摄图像并对其进行扭曲。

快速、免费、简单的代码。经过测试,它工作得很好。只需从链接下载代码,然后像这样使用 FreeTransform.cs:

using (System.Drawing.Bitmap sourceImg = new System.Drawing.Bitmap(@"c:\image.jpg")) 
{ 
    YLScsDrawing.Imaging.Filters.FreeTransform filter = new YLScsDrawing.Imaging.Filters.FreeTransform(); 
    filter.Bitmap = sourceImg;
    // assign FourCorners (the four X/Y coords) of the new perspective shape
    filter.FourCorners = new System.Drawing.PointF[] { new System.Drawing.PointF(0, 0), new System.Drawing.PointF(300, 50), new System.Drawing.PointF(300, 411), new System.Drawing.PointF(0, 461)}; 
    filter.IsBilinearInterpolation = true; // optional for higher quality
    using (System.Drawing.Bitmap perspectiveImg = filter.Bitmap) 
    {
        // perspectiveImg contains your completed image. save the image or do whatever.
    } 
}

仅供参考,我相信 .NET 有 2gb 的对象内存限制,所以如果您正在处理非常大的图像,您可能会遇到内存错误。

于 2012-01-12T09:54:01.767 回答