Bonjour,
J'aimerais détecter une feuille sur une image que je capture avec une webcam.
J'ai suivi ce tutoriel : http://aforgenet.com/articles/shape_checker/
Le soucis que j'ai, c'est qu'il n'arrive pas à me détecter une feuille...
Ici le code
Et le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 void Detection(Bitmap img_base) { BitmapData bitmapData = img_base.LockBits(new Rectangle(0, 0, img_base.Width, img_base.Height), ImageLockMode.ReadWrite, img_base.PixelFormat); // Background noir 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); // Localiser la feuille BlobCounter blobcounter = new BlobCounter(); blobcounter.FilterBlobs = true; blobcounter.MinHeight = 5; blobcounter.MinWidth = 5; blobcounter.ProcessImage(bitmapData); Blob[] blobs = blobcounter.GetObjectsInformation(); img_base.UnlockBits(bitmapData); // Dessins SimpleShapeChecker shapeChecker = new SimpleShapeChecker(); Graphics graph = Graphics.FromImage(img_base); Pen red = new Pen(Color.Red, 5); for(int i=0; i < blobs.Length; i++) { List<IntPoint> edgePoints = blobcounter.GetBlobsEdgePoints(blobs[i]); List<IntPoint> corners; if(shapeChecker.IsQuadrilateral(edgePoints, out corners)) { if(shapeChecker.CheckPolygonSubType(corners) == PolygonSubType.Rectangle) { graph.DrawPolygon(red, ToPointsArray(corners)); } } } red.Dispose(); graph.Dispose(); test_2.Source = Bitmap2BitmapImage(img_base); }
Merci d'avance
Partager