我有一些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();
我认为我需要应用一些过滤器,但是我不知道该使用哪个过滤器。
答案 0 :(得分: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()-方法。