识别文档中的矩形

问题描述 投票:0回答:1

我在jpg中有一些文档,最后是一个矩形和一个签名。我想裁剪矩形所在的图像并保存。我试图使用AForge库但我在识别文档中的矩形时遇到了一些问题。

ColorFiltering colorFilter = new ColorFiltering();

colorFilter.Red = new IntRange(0, 64);
colorFilter.Green = new IntRange(0, 64);
colorFilter.Blue = new IntRange(0, 64);
colorFilter.FillOutsideRange = false;
colorFilter.ApplyInPlace(bitmapData);

BlobCounter blobCounter = new BlobCounter();
blobCounter.FilterBlobs = true;
blobCounter.MinHeight = 5;
blobCounter.MinWidth = 5;

blobCounter.ProcessImage(bitmapData);
Blob[] blobs = blobCounter.GetObjectsInformation();

我想我需要应用一些过滤器,但我不知道使用哪一个。

c# image-processing aforge
1个回答
0
投票

有一个完整的Aforge.net教程。

在第一个链接中,您有:

// dictionary of color to highlight different shapes
Dictionary<PolygonSubType, Color> colors =
    new Dictionary<PolygonSubType, Color>( );

colors.Add( PolygonSubType.Unknown, Color.White );
colors.Add( PolygonSubType.Trapezoid, Color.Orange );
colors.Add( PolygonSubType.Parallelogram, Color.Red );
colors.Add( PolygonSubType.Rectangle, Color.Green );
colors.Add( PolygonSubType.Square, Color.Blue );
colors.Add( PolygonSubType.Rhombus, Color.Gray );

colors.Add( PolygonSubType.EquilateralTriangle, Color.Pink );
colors.Add( PolygonSubType.IsoscelesTriangle, Color.Purple );
colors.Add( PolygonSubType.RectangledTriangle, Color.SkyBlue );
colors.Add( PolygonSubType.RectangledIsoscelesTriangle, Color.SeaGreen );

for ( int i = 0, n = blobs.Length; i < n; i++ )
{
    List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints( blobs[i] );
    List<IntPoint> corners;

    if ( shapeChecker.IsConvexPolygon( edgePoints, out corners ) )
    {
        // check subtype
        PolygonSubType subType = shapeChecker.CheckPolygonSubType( corners );

        using ( Pen pen = new Pen( colors[subType], 2 ) )
        {
            g.DrawPolygon( pen, ToPointsArray( corners ) );
        }
    }
}

所以,你基本上必须使用CheckPolygonSubType() - 方法。

© www.soinside.com 2019 - 2024. All rights reserved.